1046 lines
24 KiB
Markdown
1046 lines
24 KiB
Markdown
# đ AGGIOS - PLATAFORMA SAAS MULTITENANT
|
|
|
|
**Documento Completo de EspecificaçÔes e Arquitetura**
|
|
**VersĂŁo**: 1.0
|
|
**Data**: 04/12/2025
|
|
**Status**: Pronto para Desenvolvimento (Code Agent)
|
|
|
|
---
|
|
|
|
## đ Ăndice
|
|
|
|
1. [VisĂŁo Geral](#visĂŁo-geral)
|
|
2. [Estrutura de DomĂnios](#estrutura-de-domĂnios)
|
|
3. [UsuĂĄrios e Roles](#usuĂĄrios-e-roles)
|
|
4. [MĂłdulos Principais](#mĂłdulos-principais)
|
|
5. [Modelo de NegĂłcio](#modelo-de-negĂłcio)
|
|
6. [Stack Técnico](#stack-técnico)
|
|
7. [Arquitetura](#arquitetura)
|
|
8. [Fluxo de Cadastro (5 Steps)](#fluxo-de-cadastro-5-steps)
|
|
9. [CRM - MVP](#crm---mvp)
|
|
10. [Desenvolvimento Local](#desenvolvimento-local)
|
|
11. [Deploy Produção](#deploy-produção)
|
|
12. [Roadmap](#roadmap)
|
|
13. [Segurança](#segurança)
|
|
14. [Escalabilidade](#escalabilidade)
|
|
|
|
---
|
|
|
|
## đŻ VisĂŁo Geral
|
|
|
|
**Aggios** Ă© uma plataforma SaaS multitenant que unifica ferramentas de gestĂŁo para agĂȘncias digitais.
|
|
|
|
**Problema Resolvido**: AgĂȘncias precisam gerenciar clientes, projetos, contratos, pagamentos e documentos em uma Ășnica plataforma integrada.
|
|
|
|
**Solução**: Dashboard personalizado por agĂȘncia onde:
|
|
- Admin da agĂȘncia gerencia equipe, CRM, projetos
|
|
- Clientes acessam portal para acompanhar seus projetos
|
|
- Tudo integrado: CRM, ERP, Helpdesk, Pagamentos, Contratos
|
|
|
|
**PĂșblico-alvo**: AgĂȘncias digitais de 1-50 pessoas
|
|
|
|
**Modelo**: SaaS subscription com planos diferentes
|
|
|
|
---
|
|
|
|
## đ Estrutura de DomĂnios
|
|
|
|
### DomĂnios Principais
|
|
|
|
**aggios.app** - Site Institucional
|
|
- Marketing da plataforma
|
|
- Pricing (mostra planos)
|
|
- Blog/Recursos
|
|
- Landing pages
|
|
- SEO e pĂșblico geral
|
|
|
|
**dash.aggios.app** - Admin Interno Aggios
|
|
- Super admin da plataforma
|
|
- Ver todas as agĂȘncias cadastradas
|
|
- Gerenciar assinaturas e faturamento
|
|
- Impersonate (logar como admin de outra agĂȘncia)
|
|
- Analytics da plataforma
|
|
- Suporte (abrir tickets para clientes)
|
|
|
|
**{agencia}.aggios.app** - Painel da AgĂȘncia (Multitenant)
|
|
- Exemplo: `idealpages.aggios.app`
|
|
- Admin e equipe da agĂȘncia acessam aqui
|
|
- Personalizado com logo, cores, dados da agĂȘncia
|
|
- Todos os mĂłdulos: CRM, ERP, Projetos, etc
|
|
- Subpath do portal cliente: `{agencia}.aggios.app/portal/{cliente}`
|
|
|
|
### Portal Cliente
|
|
|
|
**URL**: `{agencia}.aggios.app/portal/{cliente-id}?token=xyz`
|
|
- Cliente acessa seus projetos especĂficos
|
|
- Read-only + comentĂĄrios
|
|
- Acompanha progresso
|
|
- Download de arquivos
|
|
- Sem acesso a dados de outras agĂȘncias
|
|
|
|
---
|
|
|
|
## đ„ UsuĂĄrios e Roles
|
|
|
|
### Tipos de UsuĂĄrios
|
|
|
|
**Admin Aggios** (Plataforma)
|
|
- Acessa: `dash.aggios.app`
|
|
- PermissĂ”es: ver todas agĂȘncias, faturamento, assinaturas, analytics, impersonate
|
|
- Uso: time Aggios (suporte, vendas, admin)
|
|
|
|
**Admin da AgĂȘncia**
|
|
- Acessa: `{agencia}.aggios.app`
|
|
- PermissĂ”es: gerenciar equipe, configurar agĂȘncia, todos os mĂłdulos, relatĂłrios
|
|
- Uso: dono/gerente geral da agĂȘncia
|
|
|
|
**Gerente/Operacional**
|
|
- Acessa: `{agencia}.aggios.app`
|
|
- PermissÔes: CRM, projetos, helpdesk, mas sem financeiro/admin
|
|
- Uso: coordenador de projetos, gerente de equipe
|
|
|
|
**Membro da Equipe**
|
|
- Acessa: `{agencia}.aggios.app`
|
|
- PermissĂ”es: mĂłdulos especĂficos conforme papel (desenvolvedores, designers, etc)
|
|
- Uso: equipe interna
|
|
|
|
**Cliente (Portal)**
|
|
- Acessa: `{agencia}.aggios.app/portal/{cliente}`
|
|
- PermissÔes: ver próprios projetos, comentar, download de arquivos
|
|
- Uso: clientes da agĂȘncia
|
|
|
|
---
|
|
|
|
## đŠ MĂłdulos Principais
|
|
|
|
### MVP (VersĂŁo Inicial)
|
|
|
|
**CRM** (Customer Relationship Management)
|
|
- Gerenciar clientes (lista, adicionar, editar, deletar)
|
|
- Status: prospect, client, inactive
|
|
- Dashboard com estatĂsticas
|
|
- Filtros e busca
|
|
- Histórico de interaçÔes (futuro)
|
|
|
|
**Projetos**
|
|
- Criar projeto (nome, cliente, data de entrega)
|
|
- Kanban (To Do, In Progress, Done)
|
|
- Timeline com marcos
|
|
- Atribuir ao membro da equipe
|
|
- Anexar arquivos
|
|
|
|
**Pagamentos**
|
|
- Integração com Stripe
|
|
- Cobranças automåticas
|
|
- Faturas geradas
|
|
- HistĂłrico de pagamentos
|
|
|
|
**Portal Cliente**
|
|
- Compartilhar projeto via link
|
|
- Cliente faz login/cria conta
|
|
- Visualiza progresso
|
|
- Faz comentĂĄrios
|
|
|
|
### MĂłdulos Futuros (v1.0+)
|
|
|
|
**ERP**
|
|
- Recursos (materiais, ferramentas)
|
|
- Financeiro avançado (custos, lucro)
|
|
- RelatĂłrios financeiros
|
|
- Exportação de dados
|
|
|
|
**Helpdesk**
|
|
- Tickets de suporte
|
|
- SLA (tempo de resposta)
|
|
- Base de conhecimento
|
|
- Automação
|
|
|
|
**Contratos**
|
|
- Templates de contratos
|
|
- E-signature (assinatura digital)
|
|
- Versionamento
|
|
- HistĂłrico de assinaturas
|
|
|
|
**IntegraçÔes**
|
|
- Zapier
|
|
- Slack
|
|
- Google Workspace
|
|
- GitHub
|
|
- Jira
|
|
|
|
---
|
|
|
|
## đ° Modelo de NegĂłcio
|
|
|
|
### Planos de Assinatura
|
|
|
|
**STARTER** - R$99/mĂȘs
|
|
- CRM + Contratos + Pagamentos
|
|
- 3 usuĂĄrios
|
|
- 10 projetos simultĂąneos
|
|
- 5GB de armazenamento
|
|
- Suporte por email
|
|
|
|
**PROFESSIONAL** - R$299/mĂȘs
|
|
- Starter + ERP + Helpdesk + Projetos
|
|
- 10 usuĂĄrios
|
|
- Projetos ilimitados
|
|
- 100GB de armazenamento
|
|
- Suporte prioritĂĄrio
|
|
- API bĂĄsica
|
|
|
|
**ENTERPRISE** - R$999+/mĂȘs
|
|
- Professional + IntegraçÔes customizadas
|
|
- UsuĂĄrios ilimitados
|
|
- Armazenamento ilimitado
|
|
- Suporte 24/7
|
|
- API completa
|
|
- Webhooks
|
|
- SSO (Single Sign-On)
|
|
|
|
### Ă La Carte (Futuro)
|
|
|
|
- CRM: R$49/mĂȘs
|
|
- ERP: R$79/mĂȘs
|
|
- Helpdesk: R$59/mĂȘs
|
|
- Contratos: R$29/mĂȘs
|
|
- Projetos: R$39/mĂȘs
|
|
|
|
### Modelo de Receita
|
|
|
|
- Subscription mensal (principal)
|
|
- Taxa de setup: R$99 (primeira agĂȘncia)
|
|
- IntegraçÔes customizadas: R$1000+
|
|
- Suporte dedicado: R$500/mĂȘs
|
|
|
|
---
|
|
|
|
## đ ïž Stack TĂ©cnico
|
|
|
|
### Frontend
|
|
|
|
**Next.js** (React)
|
|
- App router (nĂŁo pages router)
|
|
- Server components quando possĂvel
|
|
- TypeScript
|
|
- Tailwind CSS para estilos
|
|
- ShadcN UI ou Radix UI para componentes
|
|
|
|
**Interfaces Principais**:
|
|
- Landing page (aggios.app)
|
|
- Admin internal (dash.aggios.app)
|
|
- Painel da agĂȘncia ({agencia}.aggios.app)
|
|
- Portal do cliente
|
|
|
|
### Backend
|
|
|
|
**NestJS** (Node.js)
|
|
- Arquitetura modular
|
|
- TypeScript nativo
|
|
- Guards, Pipes, Interceptors
|
|
- Validation com class-validator
|
|
- Documentation com Swagger
|
|
|
|
**Principais MĂłdulos**:
|
|
- Authentication (JWT, refresh tokens)
|
|
- Tenants (multi-tenancy)
|
|
- CRM
|
|
- Projetos
|
|
- Pagamentos (Stripe integration)
|
|
|
|
### Banco de Dados
|
|
|
|
**PostgreSQL**
|
|
- Schema por tenant (isolamento de dados)
|
|
- Row-Level Security (RLS) para segurança
|
|
- Migrations com Typeorm ou Knex
|
|
- Backup automĂĄtico diĂĄrio
|
|
|
|
### Cache
|
|
|
|
**Redis**
|
|
- Sessions de usuĂĄrio
|
|
- Cache de dados frequentes
|
|
- Rate limiting
|
|
- Fila de jobs
|
|
|
|
### Storage
|
|
|
|
**Minio** (S3-compatible)
|
|
- Upload de logos
|
|
- Arquivos de projetos
|
|
- Documentos/contratos
|
|
- Backup de dados
|
|
|
|
### Roteamento
|
|
|
|
**Traefik**
|
|
- Load balancer
|
|
- Roteamento por hostname
|
|
- HTTPS/SSL automĂĄtico
|
|
|
|
### CI/CD
|
|
|
|
**GitHub Actions**
|
|
- Testes automĂĄticos
|
|
- Build da aplicação
|
|
- Deploy automĂĄtico em merge para main
|
|
|
|
---
|
|
|
|
## đïž Arquitetura
|
|
|
|
### VisĂŁo Geral
|
|
|
|
```
|
|
âââââââââââââââââââââââââââââââââââââââââââââââ
|
|
â Frontend (Next.js) â
|
|
â ââ Landing: aggios.app â
|
|
â ââ Admin: dash.aggios.app â
|
|
â ââ App: {agencia}.aggios.app â
|
|
â ââ Portal: {agencia}.aggios.app/portal â
|
|
ââââââââââââââââââŹâââââââââââââââââââââââââââââ
|
|
â HTTPS
|
|
ââââââââââââââââââŒâââââââââââââââââââââââââââââ
|
|
â Traefik â
|
|
â (Roteamento por hostname) â
|
|
ââââââââââââââââââŹâââââââââââââââââââââââââââââ
|
|
â
|
|
ââââââââââââââââââŒâââââââââââââââââââââââââââââ
|
|
â Backend (NestJS API) â
|
|
â ââ Auth Module â
|
|
â ââ Tenants Module â
|
|
â ââ CRM Module â
|
|
â ââ Projetos Module â
|
|
â ââ Pagamentos Module â
|
|
ââââââââââââââââââŹâââââââââââââââââââââââââââââ
|
|
â
|
|
ââââââââââââââŒâââââââââââââŹâââââââââââ
|
|
â â â â
|
|
⌠⌠⌠âŒ
|
|
âââââââââââ ââââââââââ âââââââââââ ââââââââ
|
|
âPostgreSQLâ â Redis â â Minio â âStripeâ
|
|
â â â â â (S3) â â â
|
|
ââââââââââââ ââââââââââ âââââââââââ ââââââââ
|
|
```
|
|
|
|
### Isolamento de Dados
|
|
|
|
**Row-Level Security (RLS)** no PostgreSQL:
|
|
- Cada tenant tem suas prĂłprias linhas
|
|
- PolĂtica: usuĂĄrio sĂł vĂȘ dados do seu tenant
|
|
- ImpossĂvel vazar dados entre clientes
|
|
|
|
**Schema Compartilhado**:
|
|
- Uma tabela "tenants" com todas as agĂȘncias
|
|
- Foreign key tenant_id em todas as tabelas
|
|
- Sem criar schemas separados (simples)
|
|
|
|
---
|
|
|
|
## đ Fluxo de Cadastro (5 Steps)
|
|
|
|
### Resumo dos Steps
|
|
|
|
**Step 1**: Dados Pessoais (5 campos)
|
|
- Nome, email, telefone, whatsapp, senha
|
|
- Tempo: 2-3 minutos
|
|
|
|
**Step 2**: Empresa BĂĄsico (6 campos)
|
|
- Nome, CNPJ, descrição, website, indĂșstria, tamanho equipe
|
|
- Tempo: 3-4 minutos
|
|
|
|
**Step 3**: Localização e Contato (10 campos)
|
|
- CEP (com busca ViaCEP), estado, cidade, bairro, rua, nĂșmero, complemento
|
|
- Email comercial, telefone, whatsapp
|
|
- Tempo: 3-4 minutos
|
|
|
|
**Step 4**: Escolher DomĂnio (1 campo)
|
|
- Slug com sugestão automåtica e validação em tempo real
|
|
- Tempo: 1-2 minutos
|
|
|
|
**Step 5**: Personalização (3 campos)
|
|
- Logo (upload), cor primĂĄria, cor secundĂĄria
|
|
- Checkboxes: permitir upload cliente, portal automĂĄtico
|
|
- Tempo: 2-3 minutos
|
|
|
|
### Fluxo Técnico
|
|
|
|
```
|
|
User acessa: dash.aggios.app/cadastro
|
|
â
|
|
Step 1: Preenche dados pessoais â POST /auth/signup/step-1
|
|
â
|
|
Backend valida + INSERT signup_temp (temporĂĄrio, 24h)
|
|
â
|
|
User redireciona para Step 2
|
|
â
|
|
Step 2: Preenche dados empresa â POST /auth/signup/step-2
|
|
â
|
|
Backend valida + UPDATE signup_temp
|
|
â
|
|
Continua para Step 3, 4, 5...
|
|
â
|
|
Step 5: Upload logo + cores â POST /auth/signup/step-5
|
|
â
|
|
Backend executa TRANSAĂĂO:
|
|
ââ CREATE tenant (agĂȘncia)
|
|
ââ CREATE user (admin)
|
|
ââ DELETE signup_temp
|
|
ââ Gera JWT
|
|
ââ Retorna token + redirectUrl
|
|
â
|
|
Frontend redireciona para: {slug}.aggios.app/welcome
|
|
```
|
|
|
|
### Dados Coletados
|
|
|
|
**Pessoal** (Step 1):
|
|
- Nome completo
|
|
- Email (login)
|
|
- Telefone
|
|
- WhatsApp
|
|
- Senha (hashed)
|
|
|
|
**Empresa** (Step 2):
|
|
- Nome agĂȘncia
|
|
- CNPJ (14 dĂgitos)
|
|
- Descrição
|
|
- Website
|
|
- IndĂșstria
|
|
- Tamanho equipe
|
|
|
|
**Localização** (Step 3):
|
|
- CEP (integração ViaCEP)
|
|
- Estado/UF
|
|
- Cidade
|
|
- Bairro
|
|
- Rua/Avenida
|
|
- NĂșmero
|
|
- Complemento
|
|
|
|
**Contato** (Step 3):
|
|
- Email comercial
|
|
- Telefone empresa
|
|
- WhatsApp empresa
|
|
|
|
**DomĂnio** (Step 4):
|
|
- Slug ({agencia}.aggios.app)
|
|
|
|
**Personalização** (Step 5):
|
|
- Logo URL (Minio)
|
|
- Cor primĂĄria (hex) - PadrĂŁo: #FF3A05
|
|
- Cor secundĂĄria (hex) - PadrĂŁo: #FF0080
|
|
- Gradiente de branding: `linear-gradient(90deg, #FF3A05, #FF0080)`
|
|
- Permitir upload cliente (sim/nĂŁo)
|
|
- Portal automĂĄtico (sim/nĂŁo)
|
|
|
|
### ValidaçÔes Importantes
|
|
|
|
**CNPJ**:
|
|
- 14 dĂgitos vĂĄlidos
|
|
- DĂgitos verificadores corretos
|
|
- NĂŁo duplicado no banco
|
|
|
|
**CEP**:
|
|
- 8 dĂgitos vĂĄlidos
|
|
- Busca em ViaCEP
|
|
- Se nĂŁo encontrado: preenchimento manual
|
|
|
|
**Slug**:
|
|
- 3-50 caracteres
|
|
- Apenas a-z, 0-9, hĂfen
|
|
- NĂŁo Ă© palavra reservada
|
|
- NĂŁo duplicado
|
|
|
|
**Senha**:
|
|
- 8+ caracteres
|
|
- 1 maiĂșscula, 1 nĂșmero, 1 especial
|
|
|
|
---
|
|
|
|
## đ» CRM - MVP
|
|
|
|
### Funcionalidades IncluĂdas (MVP)
|
|
|
|
**Lista de Clientes**
|
|
- Paginação (20 por pågina)
|
|
- Busca por nome/email
|
|
- Filtro por status (prospect, client, inactive)
|
|
- Ordenação (nome, data criação, status)
|
|
|
|
**Adicionar Cliente**
|
|
- Form simples: nome, email, telefone, empresa
|
|
- Validação de email
|
|
- Cliente criado com status "prospect"
|
|
|
|
**Editar Cliente**
|
|
- Atualizar dados
|
|
- Mudar status
|
|
- Salvar histórico de mudanças
|
|
|
|
**Deletar Cliente**
|
|
- Soft delete (marca como inactive)
|
|
- Ou hard delete (remove do banco)
|
|
|
|
**Dashboard Stats**
|
|
- Total de clientes
|
|
- Clientes por status (prospect, client, inactive)
|
|
- GrĂĄficos simples
|
|
|
|
### Funcionalidades Futuras (Deixar para depois)
|
|
|
|
- Pipeline de vendas (funil)
|
|
- Histórico de interaçÔes
|
|
- Tags/categorias
|
|
- Atividades (calls, emails)
|
|
- Emails integrados
|
|
- Relatórios avançados
|
|
- Import/export CSV
|
|
- Automação
|
|
|
|
### Dados Armazenados
|
|
|
|
**Clientes**:
|
|
- ID (UUID)
|
|
- Tenant ID (qual agĂȘncia)
|
|
- Nome (obrigatĂłrio)
|
|
- Email (obrigatĂłrio)
|
|
- Telefone
|
|
- Empresa
|
|
- Status (prospect/client/inactive)
|
|
- Data criação
|
|
- Data Ășltima atualização
|
|
- Criado por (user ID)
|
|
|
|
**HistĂłrico** (futuro):
|
|
- ID
|
|
- Cliente ID
|
|
- O que mudou
|
|
- Valor anterior
|
|
- Valor novo
|
|
- Quem mudou
|
|
- Data
|
|
|
|
### URLs
|
|
|
|
- `{agencia}.aggios.app/crm/customers` - Lista
|
|
- `{agencia}.aggios.app/crm/customers/new` - Novo
|
|
- `{agencia}.aggios.app/crm/customers/[id]` - Detalhe/editar
|
|
- `{agencia}.aggios.app/crm/dashboard` - Dashboard stats
|
|
|
|
### Telas "Em Breve"
|
|
|
|
Todos os outros módulos mostram tela "Este módulo serå lançado em breve":
|
|
- ERP
|
|
- Helpdesk
|
|
- Contratos
|
|
- Pagamentos
|
|
- Projetos
|
|
|
|
---
|
|
|
|
## đïž Desenvolvimento Local
|
|
|
|
### Ambiente Local
|
|
|
|
**Ferramentas NecessĂĄrias**:
|
|
- Docker + Docker Compose
|
|
- Node.js 18+
|
|
- Git
|
|
|
|
### Serviços Locais (Docker)
|
|
|
|
```
|
|
PostgreSQL
|
|
ââ Host: localhost:5432
|
|
ââ User: aggios
|
|
ââ Password: password
|
|
ââ Database: aggios_dev
|
|
|
|
Redis
|
|
ââ Host: localhost:6379
|
|
ââ Port: 6379
|
|
|
|
Minio (S3-compatible)
|
|
ââ Host: localhost:9000
|
|
ââ User: minioadmin
|
|
ââ Password: minioadmin
|
|
ââ Bucket: aggios
|
|
|
|
Traefik
|
|
ââ Host: localhost (com config /etc/hosts para *.localhost)
|
|
ââ Dashboard: localhost:8080
|
|
ââ Router automĂĄtico por hostname
|
|
```
|
|
|
|
### Hosts Locais
|
|
|
|
Configure em `/etc/hosts`:
|
|
```
|
|
127.0.0.1 aggios.localhost
|
|
127.0.0.1 dash.aggios.localhost
|
|
127.0.0.1 idealpages.aggios.localhost
|
|
127.0.0.1 test.aggios.localhost
|
|
```
|
|
|
|
### Iniciar Ambiente
|
|
|
|
```
|
|
1. Clone repositĂłrio
|
|
2. Configure .env (cĂłpiar de .env.example)
|
|
3. docker-compose up -d
|
|
4. npm install
|
|
5. npm run db:migrate
|
|
6. npm run dev
|
|
```
|
|
|
|
### URLs de Acesso
|
|
|
|
- Landing: http://aggios.localhost
|
|
- Admin: http://dash.aggios.localhost
|
|
- AgĂȘncia teste: http://idealpages.aggios.localhost
|
|
- Minio: http://localhost:9000
|
|
- Traefik: http://localhost:8080
|
|
|
|
---
|
|
|
|
## đ Deploy Produção
|
|
|
|
### Infraestrutura
|
|
|
|
**VPS Recomendado**:
|
|
- 2GB RAM
|
|
- 20GB SSD
|
|
- Ubuntu 24 LTS
|
|
- IP pĂșblico estĂĄtico
|
|
|
|
**Provedor**: Linode, DigitalOcean, Vultr, AWS EC2
|
|
|
|
### Setup Produção (Dokploy)
|
|
|
|
**Passo 1**: Comprar VPS + domĂnio
|
|
|
|
**Passo 2**: Instalar Dokploy
|
|
- SSH no VPS
|
|
- Executar script instalação
|
|
- Interface web no `http://ip-vps:3000`
|
|
|
|
**Passo 3**: Configurar DNS
|
|
- Apontar domĂnio para IP do VPS
|
|
- SubdomĂnios: dash.aggios.app, *.aggios.app (wildcard)
|
|
|
|
**Passo 4**: Cadastrar 6 Serviços em Dokploy
|
|
|
|
1. **Landing** (Next.js - aggios.app)
|
|
- Port: 3000
|
|
- Build: `npm run build`
|
|
- Start: `npm start`
|
|
|
|
2. **Admin** (Next.js - dash.aggios.app)
|
|
- Port: 3001
|
|
- Build: `npm run build`
|
|
- Start: `npm start`
|
|
|
|
3. **API** (NestJS - *.aggios.app wildcard)
|
|
- Port: 3333
|
|
- Build: `npm run build`
|
|
- Start: `npm run start:prod`
|
|
|
|
4. **PostgreSQL**
|
|
- Port: 5432
|
|
- Backup automĂĄtico (daily)
|
|
|
|
5. **Redis**
|
|
- Port: 6379
|
|
|
|
6. **Minio**
|
|
- Port: 9000
|
|
|
|
**Passo 5**: GitHub Integration
|
|
- Conectar repositĂłrio GitHub
|
|
- Push em main â Deploy automĂĄtico
|
|
- Webhook automĂĄtico
|
|
|
|
### O que Dokploy Cuida
|
|
|
|
- Traefik integrado (nĂŁo configurar manual)
|
|
- SSL automĂĄtico (Let's Encrypt)
|
|
- HTTPS forçado
|
|
- Backup automĂĄtico de banco
|
|
- Monitoramento bĂĄsico
|
|
- CI/CD nativo
|
|
- Logs centralizados
|
|
|
|
### Diferenças Local vs Produção
|
|
|
|
| Aspecto | Local | Produção |
|
|
|---------|-------|----------|
|
|
| Traefik | Manual config | Dokploy nativo |
|
|
| HTTPS | HTTP (.localhost) | HTTPS automĂĄtico |
|
|
| DomĂnios | *.localhost | DomĂnios reais |
|
|
| SSL | NĂŁo | Let's Encrypt |
|
|
| Backup | Manual | AutomĂĄtico |
|
|
| CI/CD | Manual | GitHub webhook |
|
|
| Monitoramento | NĂŁo | BĂĄsico |
|
|
| Logs | Docker | Dokploy |
|
|
|
|
---
|
|
|
|
## đ
Roadmap
|
|
|
|
### MVP (MĂȘs 1-2)
|
|
|
|
**Prioridades**:
|
|
- Setup infraestrutura (Docker, Traefik, Dokploy)
|
|
- Autenticação (JWT, refresh tokens)
|
|
- Cadastro 5 steps
|
|
- Tenant middleware + RLS
|
|
- CRM bĂĄsico (CRUD)
|
|
- Painel inicial
|
|
- Upload de logo (Minio)
|
|
- Stripe integration bĂĄsica
|
|
- Deploy no Dokploy
|
|
|
|
**Resultado**: AgĂȘncia consegue se cadastrar e gerenciar clientes
|
|
|
|
### v1.0 (MĂȘs 2-3)
|
|
|
|
**AdiçÔes**:
|
|
- MĂłdulo Projetos (Kanban, timeline)
|
|
- Portal cliente (compartilhar projeto)
|
|
- Contratos com e-signature
|
|
- Helpdesk bĂĄsico
|
|
- RelatĂłrios simples
|
|
- Email notifications
|
|
- Onboarding/tour
|
|
|
|
**Resultado**: Plataforma funcional com todos mĂłdulos principais
|
|
|
|
### v1.1 (MĂȘs 3-4)
|
|
|
|
**AdiçÔes**:
|
|
- ERP bĂĄsico (recursos, financeiro)
|
|
- IntegraçÔes (Zapier, Slack)
|
|
- API documentada
|
|
- Webhooks
|
|
- Backup automĂĄtico na nuvem
|
|
- Autenticação 2FA
|
|
|
|
**Resultado**: Mais poderoso, integraçÔes com outros serviços
|
|
|
|
### v2.0 (Futuro)
|
|
|
|
**Inovação**:
|
|
- IA para sugestÔes (recomendaçÔes de tarefas)
|
|
- Mobile app (iOS/Android)
|
|
- Marketplace de integraçÔes
|
|
- Multi-regiĂŁo
|
|
- Chatbot suporte automĂĄtico
|
|
|
|
---
|
|
|
|
## đ Segurança
|
|
|
|
### Autenticação
|
|
|
|
- JWT (JSON Web Tokens)
|
|
- Refresh tokens (7 dias)
|
|
- Access tokens (15 minutos)
|
|
- Refresh token rotation (novo token a cada uso)
|
|
- Logout (blacklist token)
|
|
|
|
### Autorização
|
|
|
|
- Row-Level Security (PostgreSQL RLS)
|
|
- Cada user sĂł vĂȘ dados do seu tenant
|
|
- Middleware valida tenant_id em cada requisição
|
|
- Guards em endpoints crĂticos
|
|
|
|
### Dados
|
|
|
|
- Criptografia de senhas (bcrypt)
|
|
- HTTPS/SSL em produção (Let's Encrypt)
|
|
- SGBD com autenticação
|
|
- Redis com password
|
|
- Minio com credenciais
|
|
|
|
### Conformidade
|
|
|
|
- LGPD compliance (lei brasileira de dados)
|
|
- Termos de uso + Privacy policy
|
|
- Consentimento antes de cadastro
|
|
- Direito de dados (export/delete)
|
|
- Audit logs (quem fez o quĂȘ, quando)
|
|
|
|
### Backup
|
|
|
|
- Backup diĂĄrio do PostgreSQL
|
|
- Retenção: 30 dias
|
|
- Armazenamento: Minio ou nuvem
|
|
- Restore automĂĄtico testado semanalmente
|
|
|
|
---
|
|
|
|
## đ Escalabilidade
|
|
|
|
### Fase 1: AtĂ© 100 AgĂȘncias
|
|
|
|
**Infraestrutura**:
|
|
- 1 VPS (2GB RAM)
|
|
- PostgreSQL com plano starter
|
|
- Redis com cache bĂĄsico
|
|
- Minio com 50GB
|
|
|
|
**Capacidade**:
|
|
- ~10k usuĂĄrios
|
|
- ~100k clientes
|
|
- Resposta <500ms
|
|
|
|
---
|
|
|
|
### Fase 2: 100-500 AgĂȘncias
|
|
|
|
**Infraestrutura**:
|
|
- 1 VPS principal (4GB RAM)
|
|
- 1 VPS para banco (2GB RAM)
|
|
- PostgreSQL Read Replicas
|
|
- Redis Cluster
|
|
- Minio distribuĂdo
|
|
|
|
**Mudanças**:
|
|
- Load balancer entre servidores API
|
|
- Connection pooling no banco
|
|
- Cache distribuĂdo
|
|
|
|
---
|
|
|
|
### Fase 3: 500-2k AgĂȘncias
|
|
|
|
**Infraestrutura**:
|
|
- MĂșltiplas instĂąncias API
|
|
- RDS (AWS managed database)
|
|
- ElastiCache (Redis managed)
|
|
- S3 (AWS S3 real)
|
|
- CloudFront (CDN)
|
|
- ALB (Application Load Balancer)
|
|
|
|
**Mudanças**:
|
|
- Sharding de banco (por tenant)
|
|
- Cache camadas mĂșltiplas
|
|
- Workers para jobs longos
|
|
|
|
---
|
|
|
|
### Fase 4: 5k+ AgĂȘncias
|
|
|
|
**Infraestrutura**:
|
|
- Kubernetes (EKS)
|
|
- Autoscaling horizontal
|
|
- Multi-region replication
|
|
- Microsserviços
|
|
- Event-driven architecture
|
|
|
|
---
|
|
|
|
## đ Database Schema (Estrutura)
|
|
|
|
### Tabelas Principais
|
|
|
|
**tenants**
|
|
- AgĂȘncias cadastradas
|
|
- Campos: id, slug, name, cnpj, description, website, email, phone, whatsapp, logo_url, primary_color, secondary_color, industry, team_size, allow_client_uploads, enable_customer_portal, plan, status, created_at, updated_at
|
|
|
|
**users**
|
|
- UsuĂĄrios (admins, gerentes, equipe)
|
|
- Campos: id, tenant_id, first_name, last_name, email, password_hash, phone, whatsapp, role, status, last_login_at, created_at, updated_at
|
|
|
|
**signup_temp**
|
|
- Dados temporĂĄrios do cadastro (24h expiration)
|
|
- Campos: id, temp_user_id, [todos os dados coletados nos 5 steps], status, created_at, expires_at
|
|
|
|
**customers** (CRM)
|
|
- Clientes das agĂȘncias
|
|
- Campos: id, tenant_id, name, email, phone, company, status, created_at, updated_at
|
|
|
|
**projects** (futuro)
|
|
- Projetos por agĂȘncia
|
|
- Campos: id, tenant_id, name, client_id, status, start_date, due_date, created_at, updated_at
|
|
|
|
**tasks** (futuro)
|
|
- Tarefas dentro de projetos
|
|
- Campos: id, project_id, title, description, status, assigned_to, due_date, created_at, updated_at
|
|
|
|
**subscriptions**
|
|
- Assinaturas (plano + pagamento)
|
|
- Campos: id, tenant_id, plan, status, stripe_subscription_id, current_period_start, current_period_end, created_at
|
|
|
|
**audit_logs**
|
|
- Log de açÔes (segurança)
|
|
- Campos: id, tenant_id, user_id, action, resource, changes, created_at
|
|
|
|
---
|
|
|
|
## đ Estrutura de Pasta (Monorepo)
|
|
|
|
```
|
|
aggios/
|
|
âââ apps/
|
|
â âââ api-core/ (NestJS backend)
|
|
â â âââ src/
|
|
â â â âââ modules/
|
|
â â â â âââ auth/
|
|
â â â â âââ tenants/
|
|
â â â â âââ crm/
|
|
â â â â âââ projects/
|
|
â â â â âââ payments/
|
|
â â â âââ common/
|
|
â â â â âââ guards/
|
|
â â â â âââ decorators/
|
|
â â â â âââ middleware/
|
|
â â â â âââ filters/
|
|
â â â âââ config/
|
|
â â â âââ main.ts
|
|
â â âââ migrations/
|
|
â â âââ Dockerfile
|
|
â â âââ package.json
|
|
â â
|
|
â âââ landing/ (Next.js - aggios.app)
|
|
â â âââ app/
|
|
â â âââ components/
|
|
â â âââ public/
|
|
â â âââ package.json
|
|
â â
|
|
â âââ dashboard/ (Next.js - dash.aggios.app)
|
|
â â âââ app/
|
|
â â â âââ cadastro/
|
|
â â â âââ [admin pages]
|
|
â â âââ components/
|
|
â â âââ package.json
|
|
â â
|
|
â âââ tenant-app/ (Next.js - {agencia}.aggios.app)
|
|
â âââ app/
|
|
â â âââ welcome/
|
|
â â âââ crm/
|
|
â â âââ dashboard/
|
|
â â âââ [tenant pages]
|
|
â âââ components/
|
|
â âââ package.json
|
|
â
|
|
âââ packages/
|
|
â âââ shared-types/
|
|
â â âââ DTOs, interfaces, types
|
|
â âââ shared-ui/
|
|
â âââ Componentes reutilizĂĄveis
|
|
â
|
|
âââ docker-compose.yml
|
|
âââ .env.example
|
|
âââ README.md
|
|
```
|
|
|
|
---
|
|
|
|
## đŻ PrĂłximos Passos
|
|
|
|
**Semana 1**:
|
|
1. Estruturar monorepo (turborepo)
|
|
2. Setup Docker local
|
|
3. Setup PostgreSQL + migrations
|
|
4. Setup NestJS (modules auth, tenants)
|
|
|
|
**Semana 2**:
|
|
1. Setup Next.js (landing + dashboard + tenant-app)
|
|
2. Cadastro 5 steps (frontend + backend)
|
|
3. Autenticação JWT
|
|
|
|
**Semana 3**:
|
|
1. CRM bĂĄsico (CRUD)
|
|
2. Dashboard inicial
|
|
3. Integração Minio (logo)
|
|
|
|
**Semana 4**:
|
|
1. Integração Stripe
|
|
2. Stripe webhook
|
|
3. Deploy Dokploy teste
|
|
|
|
**Semana 5**:
|
|
1. Testes
|
|
2. Bugfixes
|
|
3. Deploy produção
|
|
|
|
---
|
|
|
|
## đ MĂ©tricas de Sucesso
|
|
|
|
### Para AgĂȘncia
|
|
|
|
- Tempo cadastro: < 10 minutos
|
|
- Taxa conclusĂŁo: > 60%
|
|
- Retenção 30 dias: > 70%
|
|
- NPS (satisfação): > 8/10
|
|
|
|
### Para UsuĂĄrio
|
|
|
|
- Login: < 2 segundos
|
|
- Carregar pĂĄgina: < 3 segundos
|
|
- Criar cliente: < 1 minuto
|
|
- Compartilhar projeto: < 2 minutos
|
|
|
|
### Para NegĂłcio
|
|
|
|
- Churn: < 5% mensal
|
|
- CAC (custo adquisição): < R$50
|
|
- LTV (lifetime value): > R$1000
|
|
- MRR (receita mensal): crescimento 10% mĂȘs
|
|
|
|
---
|
|
|
|
## đ Suporte e Manutenção
|
|
|
|
### Canais de Suporte
|
|
|
|
- Email: support@aggios.app
|
|
- Chat no painel
|
|
- Ticket system (Helpdesk)
|
|
- Community (Discord/Slack)
|
|
|
|
### SLA por Plano
|
|
|
|
- STARTER: 24-48h resposta
|
|
- PROFESSIONAL: 12h resposta
|
|
- ENTERPRISE: 2-4h resposta + 24/7
|
|
|
|
### Manutenção
|
|
|
|
- AtualizaçÔes: terça-feira 2h da manhã
|
|
- Downtime esperado: 15 minutos
|
|
- Backup: diĂĄrio Ă s 3h da manhĂŁ
|
|
- Monitoramento: 24/7
|
|
|
|
---
|
|
|
|
## đ Documentação Futura
|
|
|
|
**Deve ser criada**:
|
|
- API Documentation (Swagger)
|
|
- User Guide (como usar cada mĂłdulo)
|
|
- Admin Guide (como gerenciar agĂȘncia)
|
|
- Developer Guide (como integrar)
|
|
- Changelog (versÔes)
|
|
- FAQ (perguntas comuns)
|
|
|
|
---
|
|
|
|
**VersĂŁo**: 1.0
|
|
**Data Criação**: 04/12/2025
|
|
**Status**: Pronto para Code Agent
|
|
**Uso**: Compartilhar com code agent (Claude Code, ou outra IA) para gerar cĂłdigo
|
|
|
|
---
|
|
|
|
**Notas**:
|
|
- Este documento Ă© SEM CĂDIGO
|
|
- Ideal para planejamento, requisitos, arquitetura
|
|
- Code agent usarå isso como especificação técnica
|
|
- Todos os detalhes lĂłgicos estĂŁo aqui
|
|
- Falta apenas implementação (qual o trabalho do code agent) |