Arquitetura Geral¶
Objetivo¶
Definir as fronteiras arquiteturais do sistema, responsabilidades por camada e regras de dependência que preservam consistência de negócio.
Responsabilidades¶
- Descrever macrocomponentes e suas interações.
- Definir onde cada classe de regra de negócio deve residir.
- Formalizar limites entre camadas e contratos de integração.
Fora do Escopo¶
- Detalhamento endpoint a endpoint (ver documentação de API).
- Guia de implementação de tela específica (ver frontend).
- Procedimento operacional de infraestrutura (ver DevOps).
Fluxo Interno¶
- Clientes (web/mobile) disparam requisições HTTP ao backend.
- Backend aplica autenticação/autorização e executa regras de domínio.
- Persistência e integrações externas são orquestradas no backend.
- Clientes consomem respostas e renderizam estado de interface.
Componentes Arquiteturais¶
Backend¶
- API REST em Go/Echo.
- Fonte única de verdade para regras críticas do Método Billings.
- Camadas: handlers -> services -> repositories -> models.
Frontend Web¶
- React + TypeScript com roteamento por papel/módulo.
- Arquitetura por submódulo:
page -> hook -> serviceeview <- page. - Regras de negócio críticas não devem residir na camada visual.
Mobile¶
- Cliente React Native para jornadas móveis.
- Consome os mesmos contratos públicos do backend.
Dados e Infra¶
- PostgreSQL como persistência transacional.
- Cloudflare R2 para armazenamento de artefatos.
Pontos de Atenção / Riscos¶
- Derivação de regra crítica em frontend/mobile gera divergência funcional.
- Acoplamento entre contextos de domínio sem contrato explícito aumenta regressões.
- Mudanças de contrato de API sem governança degradam compatibilidade entre clientes.
Dependências Relevantes¶
- Contrato REST backend (
/api/*). - Módulos efetivos por usuário (
/users/me/modules). - Pipeline de qualidade (lint, build, testes e checks arquiteturais).
Invariantes Arquiteturais¶
- Backend valida regras de fertilidade e day-based rules.
- Autorização é obrigatória server-side, mesmo com bloqueios no cliente.
- Mudança estrutural significativa exige registro em ADR.