175 lines
6.6 KiB
Markdown
175 lines
6.6 KiB
Markdown
# Arquitetura Multi-tenant - Modelo de Negócio Aggios
|
|
|
|
## Visão Geral da Plataforma
|
|
|
|
A plataforma Aggios utiliza uma arquitetura multi-tenant em três camadas principais:
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────┐
|
|
│ aggios.app (Site Institucional) │
|
|
│ - Marketing │
|
|
│ - Cadastro de novas agências │
|
|
└─────────────────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────────────────────────────┐
|
|
│ dash.aggios.app (SuperAdmin) │
|
|
│ - Você (dono da plataforma) │
|
|
│ - Gerencia TODAS as agências │
|
|
│ - Vê analytics globais │
|
|
└─────────────────────────────────────────────────┘
|
|
│
|
|
┌───────────┴───────────┐
|
|
▼ ▼
|
|
┌──────────────────┐ ┌──────────────────┐
|
|
│ idealpages. │ │ outraagencia. │
|
|
│ aggios.app │ │ aggios.app │
|
|
├──────────────────┤ ├──────────────────┤
|
|
│ Painel da │ │ Painel da │
|
|
│ IdeaPages │ │ Outra Agência │
|
|
│ │ │ │
|
|
│ • CRM │ │ • CRM │
|
|
│ • ERP │ │ • ERP │
|
|
│ • Projetos │ │ • Projetos │
|
|
│ • White Label │ │ • White Label │
|
|
│ (seu logo) │ │ (logo deles) │
|
|
└──────────────────┘ └──────────────────┘
|
|
│ │
|
|
▼ ▼
|
|
Clientes da Clientes da
|
|
IdeaPages Outra Agência
|
|
```
|
|
|
|
## Como Funciona na Prática
|
|
|
|
### 1. Sua Agência (Exemplo: IdeaPages)
|
|
- **URL**: `idealpages.aggios.app`
|
|
- **White Label**: Logo e cores da IdeaPages
|
|
- **Clientes**: Cadastrados DENTRO da agência IdeaPages
|
|
- **Isolamento**: Cada cliente é isolado por tenant_id (multi-tenant)
|
|
|
|
### 2. Quando um Cliente Precisa do CRM
|
|
|
|
**Você SEMPRE manda a URL da sua agência**, não aggios.app!
|
|
|
|
- Cliente cria conta em `idealpages.aggios.app`
|
|
- Cliente acessa `idealpages.aggios.app` com login próprio
|
|
- Cliente vê **SEU logo** (IdeaPages)
|
|
- Cliente vê **SEU white label**
|
|
- Cliente só vê os dados DELE (isolamento por tenant)
|
|
|
|
### 3. Estrutura de Clientes
|
|
|
|
```
|
|
IdeaPages (você - agência)
|
|
├── Cliente 1 (Empresa ABC)
|
|
│ ├── Vê: Logo IdeaPages
|
|
│ ├── Acessa: idealpages.aggios.app
|
|
│ └── Usa: CRM, ERP, Projetos (dados isolados)
|
|
│
|
|
├── Cliente 2 (Tech Solutions)
|
|
│ ├── Vê: Logo IdeaPages
|
|
│ ├── Acessa: idealpages.aggios.app
|
|
│ └── Usa: CRM, ERP, Projetos (dados isolados)
|
|
│
|
|
└── Cliente 3 (Marketing Pro)
|
|
├── Vê: Logo IdeaPages
|
|
├── Acessa: idealpages.aggios.app
|
|
└── Usa: CRM, ERP, Projetos (dados isolados)
|
|
```
|
|
|
|
## Benefícios para a Agência
|
|
|
|
✅ **White Label Completo**: Cliente vê sua marca, não "Aggios"
|
|
✅ **Controle Total**: Você gerencia todos os seus clientes
|
|
✅ **Isolamento de Dados**: Cada cliente só vê os próprios dados
|
|
✅ **Escalável**: Adicione quantos clientes quiser na mesma agência
|
|
✅ **Identidade Visual**: Logo e cores personalizadas por agência
|
|
|
|
## Fluxo de Trabalho
|
|
|
|
1. **Agência se cadastra** → Cria subdomínio (ex: idealpages.aggios.app)
|
|
2. **Agência personaliza** → Upload de logo, cores, identidade visual
|
|
3. **Agência adiciona clientes** → Cada cliente recebe credenciais
|
|
4. **Cliente acessa** → idealpages.aggios.app (vê marca da agência)
|
|
5. **Cliente usa módulos** → CRM, ERP, Projetos (dados isolados)
|
|
|
|
## Resposta Direta
|
|
|
|
**Pergunta**: "Cliente precisa do CRM, mando aggios.app ou idealpages.aggios.app?"
|
|
|
|
**Resposta**: **`idealpages.aggios.app`** ✅
|
|
|
|
O cliente SEMPRE acessa o painel da sua agência, onde verá sua marca e terá acesso aos módulos que você liberar.
|
|
|
|
---
|
|
|
|
## Sistema de Links de Cadastro Personalizados
|
|
|
|
### Visão Geral
|
|
|
|
Sistema que permite ao SuperAdmin criar links de cadastro customizados, escolhendo:
|
|
- **Campos do formulário**: Quais informações coletar
|
|
- **Módulos habilitados**: Quais funcionalidades o cliente terá acesso
|
|
- **Branding**: Logo e cores personalizadas
|
|
|
|
### Fluxo de Uso
|
|
|
|
1. **SuperAdmin** acessa `dash.aggios.app/superadmin/signup-templates`
|
|
2. **Cria template** selecionando:
|
|
- Campos: email, senha, subdomínio, CNPJ, telefone, etc.
|
|
- Módulos: CRM, ERP, PROJECTS, FINANCIAL, etc.
|
|
- Slug: URL amigável (ex: `crm-rapido`)
|
|
3. **Compartilha link**: `aggios.app/cadastro/crm-rapido`
|
|
4. **Cliente acessa** e vê formulário personalizado
|
|
5. **Após cadastro**, tenant criado com módulos específicos
|
|
|
|
### Exemplo Real: DH Projects
|
|
|
|
```
|
|
Template: "CRM Rápido"
|
|
Slug: crm-rapido
|
|
Campos: email, senha, subdomínio, nome da empresa
|
|
Módulos: CRM
|
|
|
|
Link gerado: aggios.app/cadastro/crm-rapido
|
|
|
|
Cliente preenche:
|
|
- Email: contato@dhprojects.com
|
|
- Senha: ********
|
|
- Subdomínio: dhprojects
|
|
- Empresa: DH Projects
|
|
|
|
Resultado:
|
|
✅ Tenant criado: dhprojects.aggios.app
|
|
✅ Módulo CRM habilitado
|
|
✅ Outros módulos desabilitados
|
|
```
|
|
|
|
### Estrutura Técnica
|
|
|
|
**Backend:**
|
|
- Tabela: `signup_templates`
|
|
- Repository: `SignupTemplateRepository`
|
|
- Handlers: `/api/admin/signup-templates` (CRUD)
|
|
- Handler público: `/api/signup-templates/slug/{slug}` (renderiza form)
|
|
|
|
**Frontend:**
|
|
- Gerenciamento: `dash.aggios.app/superadmin/signup-templates`
|
|
- Cadastro público: `aggios.app/cadastro/{slug}`
|
|
|
|
**Campos Disponíveis:**
|
|
- email, password, subdomain (obrigatórios)
|
|
- company_name, cnpj, phone, address, city, state, zipcode (opcionais)
|
|
|
|
**Módulos Disponíveis:**
|
|
- CRM, ERP, PROJECTS, FINANCIAL, INVENTORY, HR
|
|
|
|
### Benefícios
|
|
|
|
✅ Cadastro rápido para clientes específicos
|
|
✅ Coleta apenas informações necessárias
|
|
✅ Habilita somente módulos contratados
|
|
✅ Reduz fricção no onboarding
|
|
✅ Personalização por caso de uso
|