Ir para o conteúdo

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

  1. Clientes (web/mobile) disparam requisições HTTP ao backend.
  2. Backend aplica autenticação/autorização e executa regras de domínio.
  3. Persistência e integrações externas são orquestradas no backend.
  4. 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 -> service e view <- 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.

Referências