Roadmap técnico · Firebase → backend próprio
De SPA estática ligada direto no Firebase para uma arquitetura com backend próprio, banco relacional e isolamento real de dados por empresa.
O sistema atual funciona e está em produção, mas a segurança depende só de checagens feitas no navegador. Qualquer usuário autenticado consegue, em teoria, ler e escrever dados de outra empresa. Este plano existe pra corrigir isso trazendo a lógica de autorização e os dados pra um backend que o cliente nunca acessa diretamente.
As 5 mudanças
01 — Estrutura
/frontend e /backendimport direto de código de um lado no outro02 — Backend
NestJS, que roda por cima do Express (trocável por Fastify) e já organiza módulos e injeção de dependência03 — Dados
workspace_id, checado em toda query no backendPrisma — o mais usado do mercado hoje, type-safe. Fica escondido atrás de uma interface de repositório na camada de domínio, pra regra de negócio nunca depender do ORM diretamente04 — Frontend
05 — Arquitetura interna
domínio (regras de negócio) → aplicação (casos de uso) → infraestrutura (banco, HTTP)Validação acontece nos dois lados, mas com papéis diferentes: o backend é dono da regra de negócio (camada de domínio) e revalida tudo, sempre. O frontend só desenha e valida UX — campo obrigatório, formato, feedback imediato — nunca decide regra de negócio, e nenhuma validação do frontend é confiável sozinha.
Todo o código é escrito em inglês (variáveis, funções, tabelas, endpoints, commits), sem exceção. O backend responde sempre em inglês — mensagens de erro e chaves de tradução, nunca texto traduzido fixo. O frontend decide o idioma de exibição — padrão pelo navegador do cliente, com opção de escolha manual — reaproveitando o módulo de i18n que já existe.
06 — Ordem de execução
A partir dos dados que já existem hoje no Firestore.
Camadas do Clean Architecture + primeiro endpoint funcionando: autenticação.
Clientes → Trabalhos → Gastos → Inventário → o resto. Nunca tudo de uma vez.
Até cada módulo novo estar validado — sem cliente sentir a transição.
Isolamento por empresa, validação server-side, página pública de aprovação passando a depender de um token real salvo no banco — não de parâmetros na URL.