1. Estrutura do Frontend (Flutter)
Decisão
Section titled “Decisão”O projeto adotará organização baseada em princípios de Clean Architecture simplificada, separando claramente:
- Domain
- Application
- Infrastructure
- Presentation (frontend)
- Interfaces (backend)
1. Estrutura do Frontend (Flutter)
Section titled “1. Estrutura do Frontend (Flutter)”Estrutura oficial:
frontend/ └── lib/ ├── core/ ├── domain/ ├── application/ ├── infrastructure/ ├── presentation/ └── shared/
1.1 domain
Section titled “1.1 domain”Contém:
- Entidades
- Value Objects
- Regras puras de domínio
- Interfaces abstratas
Não pode depender de Firebase ou Flutter.
1.2 application
Section titled “1.2 application”Contém:
- Use cases
- Orquestração de regras
- Serviços de aplicação
Pode depender de domain, mas não de infraestrutura concreta.
1.3 infrastructure
Section titled “1.3 infrastructure”Contém:
- Implementações de repositórios
- Integração com Firebase
- Adaptadores externos
Pode depender de domain e application.
1.4 presentation
Section titled “1.4 presentation”Contém:
- Widgets
- Controllers
- State management
- Rotas
Pode depender de application.
Nunca deve conter regra de negócio crítica.
1.5 core
Section titled “1.5 core”Contém:
- Configurações globais
- Inicialização
- Tratamento de erros
- Serviços base
1.6 shared
Section titled “1.6 shared”Contém:
- Componentes reutilizáveis
- Utilitários
- Constantes
2. Estrutura do Backend (Cloud Functions)
Section titled “2. Estrutura do Backend (Cloud Functions)”Estrutura oficial:
backend/ └── functions/ ├── domain/ ├── application/ ├── infrastructure/ ├── interfaces/ └── shared/
2.1 domain
Section titled “2.1 domain”- Entidades
- Regras puras
- Interfaces de repositório
Não depende de Firebase SDK.
2.2 application
Section titled “2.2 application”- Casos de uso
- Serviços de validação
- Orquestração de lógica
2.3 infrastructure
Section titled “2.3 infrastructure”- Implementação concreta de acesso ao Firestore
- Integração com Firebase Auth
- Logs
2.4 interfaces
Section titled “2.4 interfaces”- Entradas HTTP
- Handlers de Cloud Functions
- Validação de requisição
- Mapeamento de DTOs
2.5 shared
Section titled “2.5 shared”- Utilitários
- Tipos comuns
- Constantes globais
3. Regras Estruturais
Section titled “3. Regras Estruturais”- Domain não depende de infraestrutura.
- Presentation não contém regra de negócio crítica.
- Backend valida todas as regras finais.
- Nenhuma função acessa Firestore diretamente fora da camada infrastructure.
- Não será utilizado padrão anárquico baseado apenas em “features soltas”.
4. Nomeação
Section titled “4. Nomeação”- Pastas internas em inglês.
- ADRs em português.
- Classes e arquivos em inglês.
- Entidades com nomes claros e sem abreviações excessivas.
5. Testes
Section titled “5. Testes”- Testes unitários para domínio.
- Testes de aplicação.
- Uso do Firebase Emulator para backend.
- Testes não devem depender de produção.
Consequências
Section titled “Consequências”- A estrutura impõe disciplina arquitetural.
- Refatorações futuras serão mais seguras.
- Novos colaboradores terão referência clara.
- Crescimento desordenado será evitado.