Arquitetura para contribuidores
Esta página apresenta a visão de arquitetura orientada a contribuidores. As páginas de arquitetura de produto vão mais a fundo na lógica de negócio; esta página responde a uma pergunta mais simples: Onde um contribuidor deve fazer uma mudança?Apps ativos
-
apps/app: UI do operador para inbox, contatos, templates, campanhas, journeys, configurações e visões de runtime. -
apps/web: site público e páginas próximas a marketing. -
apps/api: superfície de API em Next.js para endpoints internos, rotas de compatibilidade e o ingress atual da alpha hospedada na Vercel. -
apps/control-plane: runtime Node dedicado para trabalho de control-plane orientado a webhook e a fila. Permanece no repositório, mas não faz parte do contrato atual da alpha hospedada. -
apps/worker: loop de worker em segundo plano para processamento de outbox e reconciliação, destinado ao Railway na alpha. -
apps/storybook: workbench de componentes compartilhados.
Packages compartilhados
packages/auth: helpers de autenticação Supabase e infraestrutura de sessãopackages/database: o único limite de data-plane suportado, incluindo contratos de repositório, adaptadores e responsabilidade voltada a migrationspackages/design-system: primitivos de UI compartilhadospackages/domain: contratos de domínio, dados mockados e parsing de env em runtimepackages/feature-flags: helpers de flags e utilitários de toolbarpackages/observability: logging e instrumentação leve de runtimepackages/security: helpers de middleware de proxy/segurançapackages/whatsapp: schemas de provider, validação de payload e constantes de restrição
Limite do workspace ativo
A linha de release0.1.x suporta intencionalmente os workspaces ativos listados acima.
O repositório também mantém diversos apps e packages derivados do next-forge fora do conjunto de workspaces ativos. Esses arquivos são material de scaffold para ativação futura de funcionalidades, e ainda não fazem parte do contrato padrão de verificação.
Divisão de runtime
Contribuidores devem pensar no repositório como três camadas de execução:- Camada de frontend em
apps/app,apps/webeapps/docs - Camada de request/HTTP em
apps/apieapps/control-plane - Camada de processamento em segundo plano em
apps/worker
Onde colocar mudanças comuns
- Adicione tipos compartilhados ou contratos de domínio em
packages/domain. - Adicione validação de provider ou schemas de payload em
packages/whatsapp. - Adicione lógica de acesso a dados compartilhada em
packages/database. - Adicione UI reutilizável voltada ao operador em
packages/design-system, com stories do Storybook. - Adicione comportamento específico de rota no app que de fato é responsável pelo runtime.
Observação sobre a implementação atual
- O repositório já possui uma baseline de schema Supabase e um contrato de auth/env.
- Muitas superfícies de produto visíveis para contribuidores ainda rodam sobre a camada de repositório com mock tipado.
- O repositório ainda não tem uma abstração de ORM verdadeira; não descreva o repositório dessa forma até que os adaptadores mock e Supabase estejam alinhados às mesmas interfaces de repositório.
- Ao alterar comportamento, documente se a mudança afeta o caminho mock, o caminho Supabase, ou ambos.