Pular para conteúdo

ADR 0014 — Telas em React + MapLibre, mapa de fundo sem chave

Status: Aceita · Data: 09/11/2026

Contexto

O admin serve para cadastro, mas o dia a dia (achar uma CTO, ver portas livres, conferir o sinal de um cliente) precisa de um mapa, no PC e no celular do técnico em campo, e de uma tela própria para parceiros, que não entram no admin.

Decisão

  • React 19 + Vite + TypeScript, na pasta frontend/. Sem framework de CSS: um arquivo de estilos com variáveis de tema (Claro/Escuro/Sistema, ADR 0010).
  • MapLibre GL para o mapa (código aberto, sem conta nem chave).
  • Mapa de fundo trocável por um botão: ruas do OpenStreetMap e satélite Esri World Imagery, ambos sem chave. Google Maps foi descartado por exigir chave e cartão.
  • As telas são arquivos estáticos compilados na imagem do nginx e servidos em /; falam só com a API (/api/), com a mesma sessão do login. Nenhum servidor Node em produção.
  • Responsivo: painel lateral no PC, gaveta inferior no celular; localização do aparelho no mapa (GPS).
  • A rede vem de /api/rede/mapa/ em GeoJSON, já filtrada por usuário (parceiro só recebe CTOs).

Consequências

  • Atualizar o sistema recompila as telas junto (./scripts/atualizar.sh), sem passo extra.
  • Os servidores de mapa públicos têm limite de uso justo; para uso muito intenso, dá para trocar por um provedor próprio de mapas só mudando frontend/src/mapaEstilo.ts.
  • O CI confere tipos e compila as telas a cada envio.