adr-0001-arquitetura-geral-do-sistema
Decisão
Section titled “Decisão”A arquitetura oficial do sistema será composta por:
1. Modelo Arquitetural
Section titled “1. Modelo Arquitetural”Arquitetura Web Mobile-first com backend serverless.
Estrutura lógica:
[ Flutter Web (PWA) ] ↓ [ Firebase Authentication ] ↓ [ Tenant Resolver (domínio -> ministry_id) ] ↓ [ Cloud Functions (TypeScript) ] ↓ [ Firestore ]
2. Frontend
Section titled “2. Frontend”O frontend será desenvolvido utilizando:
- Flutter Web (Dart)
- Configurado como Progressive Web App (PWA)
- Estruturado seguindo princípios de Clean Architecture simplificada
Objetivos do frontend:
- Interface otimizada para dispositivos móveis
- Instalação opcional como aplicativo (via PWA)
- Separação clara entre camadas de domínio, aplicação e apresentação
- Comunicação exclusiva com backend via APIs
3. Backend
Section titled “3. Backend”O backend será baseado na plataforma Firebase, utilizando:
- Firebase Authentication para autenticação
- Firestore como banco de dados NoSQL
- Cloud Functions escritas em TypeScript para lógica de negócio
- Firebase Emulator para desenvolvimento local
Características:
- Arquitetura serverless
- Escalabilidade automática
- Separação entre regras de domínio e infraestrutura
4. Separação de Responsabilidades
Section titled “4. Separação de Responsabilidades”O frontend:
- Não conterá regras críticas de negócio
- Apenas orquestrará fluxos e validações básicas
O backend:
- Será responsável por todas as regras de negócio
- Aplicará controle de acesso
- Validará presença
- Garantirá isolamento multi-igreja
- Resolverá tenant por domínio de entrada e escopo autorizado
5. Estrutura Física do Repositório
Section titled “5. Estrutura Física do Repositório”A organização seguirá o padrão:
ebdbe/ │ ├── frontend/ │ ├── lib/ │ │ ├── core/ │ │ ├── domain/ │ │ ├── application/ │ │ ├── infrastructure/ │ │ ├── presentation/ │ │ └── shared/ │ │ │ ├── test/ │ └── web/ │ ├── backend/ │ ├── functions/ │ │ ├── domain/ │ │ ├── application/ │ │ ├── infrastructure/ │ │ ├── interfaces/ │ │ └── shared/ │ │ │ ├── tests/ │ └── emulator/ │ ├── docs/ │ ├── architecture/ │ │ └── adrs/ │ ├── diagrams/ │ └── models/ │ └── README.md
6. Princípios Arquiteturais
Section titled “6. Princípios Arquiteturais”- Mobile-first como prioridade.
- Backend como autoridade de negócio.
- Separação clara entre camadas.
- Evolução incremental via ADR.
- Multi-igreja como requisito estrutural.
- Privacidade como premissa arquitetural.
- Multitenancy por domínio com validação obrigatória de escopo.
- Administração global somente via papel e trilha auditável.
Consequências
Section titled “Consequências”- O sistema não dependerá de publicação em loja de aplicativos.
- O frontend poderá evoluir para aplicativo nativo no futuro sem ruptura arquitetural.
- A escalabilidade será gerenciada pela infraestrutura Firebase.
- A lógica de negócio estará centralizada e auditável no backend.
- Toda modificação estrutural futura exigirá novo ADR.
- O roteamento por domínio passa a influenciar a resolução de contexto (
ministry_id). - Referência complementar: ADR-0012 (multitenancy por domínio e PLATFORM_ADMIN).