DEC-001 — Stack Tecnológica do V360
Contexto
O V360 precisa de base robusta, relacional e auditável: segregação entre empresas, origem de cada informação, Human Gates rastreáveis, documentos protegidos e uma camada de IA que só sugere.
Proposta
| Camada | Escolha | Por quê |
|---|---|---|
| Banco | PostgreSQL | relacional, maduro, transações, JSONB, extensões |
| Plataforma do banco | Neon (Postgres serverless) — escolhido por Luiz em 2026-09-16 | Postgres puro (sem lock-in), escala a zero, branching (um banco por branch/teste/Cliente Zero), point-in-time restore |
| Multi-tenant | Row Level Security por empresa_id (Neon RLS com JWT do provedor de auth) | segregação garantida no banco, não só na aplicação |
| Busca semântica | pgvector | IA busca propostas/notas similares no mesmo banco |
| App | Next.js + TypeScript | front e API no mesmo projeto, tipagem ponta a ponta |
| ORM / migrações | Drizzle ou Prisma | schema versionado |
| Hospedagem | Vercel — definido em 2026-09-16, ver DEC-004 Hospedagem | deploy automático e previews com branch do Neon |
| Jobs assíncronos | Inngest ou Trigger.dev | pesquisa pública e geração de materiais são lentas |
| IA | Anthropic como padrão, via módulo próprio e Vercel AI SDK (DEC-006 IA Independente de Fornecedor) | saída sempre gravada como sugestao até validação |
| Autenticação | Neon Auth (Better Auth gerenciado) — definido em 2026-09-16, ver DEC-002 Autenticação | grátis até 60 mil MAU; usuários no próprio banco |
| Documentos | Cloudflare R2 (privado, URLs assinadas) — definido em 2026-09-16, ver DEC-003 Armazenamento de Arquivos | 10 GB grátis/mês, download sem custo |
| Driver | @neondatabase/serverless + Drizzle | conexões HTTP/WebSocket ideais para Next.js/serverless |
| Auditoria | tabela audit_log + triggers | rastreabilidade exigida pelos gates |
Requisitos do documento → como a stack atende
- Segregação entre empresas → RLS
- Rastreabilidade / correção humana →
audit_log,validado_por,validado_em - Fontes e datas das informações → tabela
evidenciacomorigem,fonte_url,coletado_em - IA nunca valida → estados
sugerido → validado | ajustado | rejeitado; só usuários humanos mudam estado (checado no banco) - Preparar ML/scoring futuro sem construir agora → dados estruturados + eventos de etapa com timestamp
Alternativas descartadas
- MongoDB / Firebase — domínio muito relacional (empresa → lead → oportunidade → proposta → handoff).
- Supabase — ótimo pacote completo, mas a equipe optou por Neon (branching e Postgres serverless); auth e storage passam a ser peças separadas.
- No-code como base — limita RLS, auditoria e evolução.
- Microserviços — complexidade desnecessária para o MVP; começar com monólito modular.
Status
aceita — banco Neon definido por Luiz (2026-09-16). Auth definido: Neon Auth (DEC-002 Autenticação). Arquivos definidos: Cloudflare R2 (DEC-003 Armazenamento de Arquivos). Stack completa — aceita por Luiz em 2026-09-16.
Boas práticas com Neon
- Branch
main= produção · branchdev· branch por feature/teste (inclusivecliente-zero-lcverum) - Migrações versionadas (Drizzle Kit) aplicadas primeiro em branch
- Usar a connection string pooled na aplicação e a direta para migrações
- Habilitar extensão
vector(pgvector) para a busca semântica
Relacionado: Modelo de Dados · Privacidade, Segurança e Ética · Roadmap de Construção