chore: initial monorepo scaffold + WDS Phase 1+2 artifacts
- Nx 22.7 monorepo (pnpm 11.1, TypeScript 5.9, Node 24) - apps/api: NestJS 11 (CJS conforme CODING-RULES.md PGD-DB-004) - apps/web: React 19 + Vite 8 (ESM) - libs/shared/api-interface: Zod contract base - Docker Compose dev: Postgres 18, Valkey 8, MinIO, Mailpit - WDS artifacts: - design-artifacts/A-Product-Brief/ (5 docs canônicos + 16 dialogs) - design-artifacts/B-Trigger-Map/ (hub + 4 personas + feature impact) - Stack canon: STACK.md v2.2 + CODING-RULES.md v2.0 + brand.md - AGENTS.md + README.md como entrada para devs/agentes Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
188
design-artifacts/A-Product-Brief/dialog/constraints.md
Normal file
188
design-artifacts/A-Product-Brief/dialog/constraints.md
Normal file
@@ -0,0 +1,188 @@
|
||||
# Constraints — SAR (Força de Vendas)
|
||||
|
||||
**Confirmed:** 2026-05-26
|
||||
**Step:** 10 — Constraints
|
||||
|
||||
> Reposicionados como **parâmetros de design** — o que dá forma ao SAR. Fixo = certeza estratégica; Flexível = decidimos depois.
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Tensão estratégica explícita (flagueada por Saga)
|
||||
|
||||
**O combo decidido:**
|
||||
- Concept ambicioso (4 cockpits + WhatsApp nativo + IA estratégica + multi-tenant + real-time)
|
||||
- MVP em 3-4 meses
|
||||
- **Solo founder mode** (Julian full-time até 1º cliente)
|
||||
|
||||
**A matemática não fecha sem trade-off.** Solo + 3-4 meses não comporta o concept completo no MVP.
|
||||
|
||||
### Resolução proposta (a confirmar em Phase 3 PRD)
|
||||
|
||||
**MVP mínimo defensível** (refinar em Phase 3):
|
||||
- ✅ **Rep cockpit** (Rafael — primária, mobile-first) — obrigatório
|
||||
- ✅ **Supervisor cockpit** (Sandra — influenciadora-chave da venda) — obrigatório, mas em forma simplificada
|
||||
- ✅ **Arquitetura multi-tenant BD-por-workspace** — fundacional, não dá pra adiar
|
||||
- ✅ **WhatsApp** — versão básica (envio de notificações; recebimento e conversa bidirecional pode ser fase pós-MVP)
|
||||
- 🟡 **Dono cockpit** (Daniel) — dashboard simples no MVP; **IA estratégica entra pós-MVP** (validar primeiro cliente)
|
||||
- 🟡 **Admin cockpit** (Alice) — cadastros essenciais + pautas; **editor no-code de campanhas entra pós-MVP**
|
||||
|
||||
**Justificativa:** 1º cliente do MVP é referência interna ou parceiro próximo (não cold lead). Pode aceitar limitações em troca de preço/condições especiais. Quando o 1º cliente renova (north star MVP), Julian contrata 1-2 devs e completa IA + editor no-code + cockpits ricos.
|
||||
|
||||
**Alternativa (se o trade-off for inaceitável):**
|
||||
- Reduzir solo period — contratar 1 dev mesmo antes do 1º cliente
|
||||
- OU esticar MVP para 5-6 meses
|
||||
- OU reduzir concept (sacrificar 1 cockpit ou um diferencial)
|
||||
|
||||
---
|
||||
|
||||
## Timeline
|
||||
|
||||
### Fixo
|
||||
- **MVP em produção com 1º cliente real:** 3-4 meses (a partir de 2026-05-26)
|
||||
- **North star MVP:** 1º cliente renova em mês 6-7
|
||||
- **Janela de mercado:** 2-3 anos para entrincheirar antes de saturação SaaS força de vendas BR
|
||||
- **10 clientes pagantes:** ~mês 12
|
||||
|
||||
### Flexível
|
||||
- Ordem das features dentro do MVP
|
||||
- GA público / fim de beta (depende de qualidade do MVP)
|
||||
- Sem deadline externo rígido (não há feira/contrato amarrando data)
|
||||
|
||||
### Implicação de design
|
||||
> "Build to learn, not to plan." MVP minimalista, instrumentado para medir desde dia 0.
|
||||
|
||||
---
|
||||
|
||||
## Budget
|
||||
|
||||
### Fixo
|
||||
- **Stakes:** small-business (PME software house, 11-50 pessoas) — não é Series A
|
||||
- **CAC payback < 12 meses** (Step 8) — limita o quanto se pode gastar para adquirir cada cliente
|
||||
- **Aquisição inicial baixa-fricção:** indicação + SEO antes de ads pagos pesados
|
||||
- Sem orçamento para infra de luxo — STACK.md self-host Proxmox já calibrado para isso
|
||||
|
||||
### Flexível
|
||||
- Tamanho do time escala com tração
|
||||
- Investimento em marketing escala com receita
|
||||
- Eventos/feiras escolhidos seletivamente
|
||||
|
||||
### Implicação de design
|
||||
> Stack canônica self-host (Proxmox) + multi-tenancy bem feita = custo de infra por workspace baixíssimo. Crescimento sustentável.
|
||||
|
||||
---
|
||||
|
||||
## Recursos humanos
|
||||
|
||||
### Fixo (estado atual)
|
||||
- **Julian:** PO + Tech Lead + Champion + único dev (solo founder mode até 1º cliente)
|
||||
- Sem time de design dedicado — estreia em processo UX formal via WDS
|
||||
- Atendimento/SDR inicial = Julian
|
||||
|
||||
### Premissa pós-MVP (a confirmar quando 1º cliente fechar)
|
||||
- Contratar 1-2 devs adicionais para acelerar IA + editor no-code + cockpits ricos
|
||||
- Atendimento eventualmente separado
|
||||
|
||||
### Flexível
|
||||
- Quem são os devs adicionais (interno JCS / freelance / contratação)
|
||||
- Timing de profissionalização do atendimento
|
||||
|
||||
### ⚠️ Implicação crítica
|
||||
> Solo founder mode é o **constraint mais apertado** do projeto. Toda decisão de escopo no MVP precisa respeitar isso. Tudo que "pode esperar pra fase 2" → vai pra fase 2.
|
||||
|
||||
---
|
||||
|
||||
## Técnico — STACK.md v2.2 (FIXO por escolha do PO)
|
||||
|
||||
| Camada | Decisão |
|
||||
|---|---|
|
||||
| Runtime | Node 24 LTS · pnpm 11.1 · TypeScript 5.9 |
|
||||
| Monorepo | Nx 22.7 (`apps/api` + `apps/web` + `libs/`) |
|
||||
| Backend | NestJS 11.1 · Prisma 7 · PostgreSQL 18 · BullMQ · nestjs-cls |
|
||||
| Frontend | React 19.2 · Vite 8 · Ant Design 6.4 · TanStack Query/Router · Zustand |
|
||||
| API | REST + OpenAPI 3.1 + RFC 9457 · Zod 4 (catalog) · nestjs-zod |
|
||||
| Auth | master-login (IdP próprio) · jose · argon2id |
|
||||
| Multi-tenancy | **BD-por-workspace** (ADR 0006) |
|
||||
| Real-time | Socket.IO 4 + redis-adapter (Valkey) · SSE nativo NestJS |
|
||||
| Secrets | HashiCorp Vault (KV v2) self-host |
|
||||
| Observabilidade | Pino + OpenTelemetry · Grafana Cloud LGTM · Sentry |
|
||||
| Filas | BullMQ 5.77 |
|
||||
| Uploads | MinIO (S3-compat) + ClamAV worker · sharp |
|
||||
| Email | Resend (SaaS) + React Email via BullMQ |
|
||||
| Infra | Proxmox on-prem BR (ADR 0004) · Docker Compose · Ansible deploy |
|
||||
| CDN | Cloudflare + Nginx para SPA estática |
|
||||
|
||||
### Flexível (decidir em Step 29 — Integrations)
|
||||
- **Provider de pagamento:** Stripe / Iugu / Pagar.me / Gerencianet
|
||||
- **Provider de IA:** OpenAI / Anthropic / local
|
||||
- **WhatsApp Business API:** oficial Meta vs intermediário (Z-API, Twilio, Gupshup)
|
||||
- **Analytics de produto:** PostHog self-host? Amplitude? Misto?
|
||||
|
||||
### Implicação de design
|
||||
> "STACK.md é fonte da verdade. Nada de propor PostgREST, Supabase, Next.js, trocar AntD por shadcn." Decisões fora da tabela exigem RFC.
|
||||
|
||||
---
|
||||
|
||||
## Brand — brand.md (FIXO por escolha do PO)
|
||||
|
||||
### Fixo
|
||||
- **Paleta:** JCS Blue `#004a99` como único destaque cromático
|
||||
- **Tipografia:** Plus Jakarta Sans (pesos 400/500/600/700/800)
|
||||
- **Ícones:** Font Awesome 6.4.0
|
||||
- **Gráficos:** Chart.js
|
||||
- **Radius:** 12px (md) / 20px (lg)
|
||||
- **Sombra padrão:** `0 4px 25px rgba(0,0,0,0.05)`
|
||||
- **Layout base:** topbar 80px + sidebar 260px fixa (cockpits Sandra/Daniel/Alice)
|
||||
- **Tom visual:** Apple-inspired, clean, minimalista
|
||||
|
||||
### Flexível (Phase 6 Design System detalha)
|
||||
- **Variações por cockpit** — especialmente Rafael mobile-first (navegação inferior, single-column, touch-friendly)
|
||||
- Tokens secundários (estados de feedback) dentro da paleta JCS
|
||||
- Tom de voz textual (Steps 13-15)
|
||||
- Imagery (Step 25)
|
||||
- **Dark mode** (desejável especialmente Rafael à noite)
|
||||
|
||||
### Implicação de design
|
||||
> brand.md é a base. Phase 6 (Design System) **estende** com variantes por cockpit, não substitui.
|
||||
|
||||
---
|
||||
|
||||
## Regulatório / LGPD (FIXO — STACK.md §22)
|
||||
|
||||
| Item | Decisão |
|
||||
|---|---|
|
||||
| **Base legal** | Execução de contrato (cliente-empresa é controlador; SAR é operador) |
|
||||
| **Isolamento** | Físico — cluster PG dedicado por workspace (ADR 0006) |
|
||||
| **Datacenter** | BR (Proxmox on-prem) — elimina exposição ao CLOUD Act US |
|
||||
| **PII** | Criptografada — MinIO SSE + `pgcrypto` |
|
||||
| **Logs** | Redact agressivo (CPF, cardNumber, password, authorization, cookie) |
|
||||
| **Auditoria** | Art. 18 LGPD (acesso/correção/eliminação de dados pessoais) |
|
||||
| **Hash em targeting de flags** | Para feature flags com info pessoal |
|
||||
|
||||
### Implicação adicional para WhatsApp + IA
|
||||
- DPA (Data Processing Agreement) obrigatório com providers externos (Meta, OpenAI/Anthropic)
|
||||
- Hashar dados de cliente antes de mandar para IA (não enviar nome, CPF, telefone real)
|
||||
- WhatsApp: cliente do SAR opt-in explícito do contato final (cliente-do-cliente) antes do primeiro envio
|
||||
|
||||
---
|
||||
|
||||
## Dependências externas (risco fixo, mitigação flexível)
|
||||
|
||||
| Dependência | Risco | Mitigação |
|
||||
|---|---|---|
|
||||
| Meta WhatsApp Business | Mudança de regras → integração quebra | Arquitetura plug-in; alternativas Telegram/SMS no roadmap |
|
||||
| OpenAI / Anthropic / IA externa | Mudança de pricing, quota, política | Abstração de provider; capacidade de trocar |
|
||||
| Resend (email) | SaaS pode mudar tier | Migrar para SES/Mailgun; abstração de envio |
|
||||
| Cloudflare (CDN) | SaaS muda preço/política | Migrar para outro CDN; impacto baixo |
|
||||
| Provider BR de pagamento | Falha/lentidão pode bloquear cobrança | Multi-provider com fallback (Step 29) |
|
||||
|
||||
---
|
||||
|
||||
## Resumo: o que o constraint map nos diz
|
||||
|
||||
1. **MVP precisa ser radicalmente priorizado** — solo + 3-4 meses não comporta o concept completo. Refinar em Phase 3 PRD.
|
||||
2. **Rafael + Sandra são obrigatórios** no MVP; Daniel e Alice entram em forma simplificada.
|
||||
3. **IA estratégica entra pós-MVP** — depois do 1º cliente validado.
|
||||
4. **Editor de campanhas no-code** (Alice) entra pós-MVP — pode usar tela direta no MVP.
|
||||
5. **Stack canon JCS + brand.md são parâmetros, não restrições negativas** — eliminam decisões e aceleram desenvolvimento.
|
||||
6. **LGPD by design** alinha com o concept multi-tenancy físico — não é overhead, é diferencial competitivo.
|
||||
7. **Solo founder mode é o constraint mais apertado** — todo escopo precisa respeitar isso. Tudo que pode esperar → espera.
|
||||
Reference in New Issue
Block a user