# guiacc12/tcc-grupo-2 architecture

> Architecture diagram of the GitHub repository guiacc12/tcc-grupo-2, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/guiacc12/tcc-grupo-2
- Repository: https://github.com/guiacc12/tcc-grupo-2

## Overview

LeadFlow é um SaaS multiempresa para capturar leads em formulários nativos, encaminhá-los aos CRMs configurados e acionar automações de WhatsApp. O fluxo principal vai da implementação do formulário à captura pública e ao processamento assíncrono; os painéis também cobrem administração de empresas, leads, domínios e integrações. As relações entre interface e rotas seguem os endpoints visíveis; detalhes internos de rotas não amostradas são representados apenas quando a documentação descreve a capacidade, sem presumir chamadas específicas.

Main entry points: [`backend/src/app.js`](https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/app.js) (Aplicação Express), [`frontend/src/lib/api.js`](https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/lib/api.js) (Cliente API), [`db/schema.sql`](https://github.com/guiacc12/tcc-grupo-2/blob/main/db/schema.sql) (MySQL saas_leads), [`backend/src/servicos/fila.js`](https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/servicos/fila.js) (Fila e worker)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_front["Painéis e captura"]
  node_app_ui["Rotas do painel<br/>[App.jsx]"]
  node_login_ui["Login<br/>[Login.jsx]"]
  node_admin_ui["Empresas admin<br/>[Empresas.jsx]"]
  node_forms_ui["Formulários<br/>[Formularios.jsx]"]
  node_install_ui["Implementação<br/>[Implementar.jsx]"]
  node_embed_gen["Gerador de embeds<br/>[embeds.js]"]
  node_leads_ui["Leads e visão geral<br/>[Leads.jsx]"]
  node_crm_ui["Configuração CRM<br/>[Crm.jsx]"]
  node_whatsapp_ui["Configuração WhatsApp<br/>[Whatsapp.jsx]"]
  node_domains_ui["Domínios<br/>[Dominios.jsx]"]
  node_api_client["Cliente API<br/>[api.js]"]
end

subgraph group_api["API e configuração"]
  node_api_app["Aplicação Express<br/>[app.js]"]
  node_auth_route["Autenticação<br/>[auth.js]"]
  node_admin_route["Administração<br/>[admin.js]"]
  node_capture_route["Captura pública<br/>[captura.js]"]
  node_forms_route["Gestão de formulários<br/>[formularios.js]"]
  node_leads_route["Gestão de leads<br/>[leads.js]"]
  node_crm_route["Rotas CRM<br/>[crm.js]"]
  node_domains_route["Rotas de domínios<br/>[dominios.js]"]
  node_whatsapp_route["Rotas WhatsApp<br/>[whatsapp.js]"]
end

subgraph group_processing["Processamento de leads"]
  node_database[("MySQL saas_leads<br/>[schema.sql]")]
  node_queue_worker["Fila e worker<br/>[fila.js]"]
end

subgraph group_integrations["Integrações externas"]
  node_crm_registry["Seleção de adapter<br/>[index.js]"]
  node_crm_adapters["Adapters CRM"]
  node_evolution_service["Serviço Evolution<br/>[evolution.js]"]
end

node_company_user(("Usuário empresa"))
node_admin_user(("Super admin"))
node_lead_visitor(("Visitante"))
node_crm_service{{"CRM externo"}}
node_evolution_api{{"Evolution API"}}

node_company_user -->|"acessa"| node_login_ui
node_admin_user -->|"acessa"| node_login_ui
node_login_ui -->|"envia login"| node_api_client
node_api_client -->|"chama API"| node_api_app
node_api_app -->|"monta rotas"| node_auth_route
node_api_app -->|"monta rotas"| node_admin_route
node_api_app -->|"monta rotas"| node_capture_route
node_api_app -->|"monta rotas"| node_forms_route
node_api_app -->|"monta rotas"| node_leads_route
node_api_app -->|"monta rotas"| node_crm_route
node_api_app -->|"monta rotas"| node_domains_route
node_api_app -->|"monta rotas"| node_whatsapp_route
node_admin_ui -->|"gerencia empresas"| node_api_client
node_forms_ui -->|"edita formulários"| node_api_client
node_install_ui -->|"gera código"| node_embed_gen
node_forms_ui -->|"carrega e salva"| node_api_client
node_leads_ui -->|"consulta leads"| node_api_client
node_crm_ui -->|"configura CRM"| node_api_client
node_whatsapp_ui -->|"configura automações"| node_api_client
node_domains_ui -->|"configura domínios"| node_api_client
node_api_client -->|"chama endpoints"| node_api_app
node_lead_visitor -->|"usa formulário"| node_embed_gen
node_embed_gen -->|"envia captura"| node_capture_route
node_auth_route -->|"consulta credenciais"| node_database
node_admin_route -->|"mantém empresas"| node_database
node_capture_route -->|"grava lead"| node_database
node_forms_route -->|"mantém formulários"| node_database
node_leads_route -->|"consulta leads"| node_database
node_crm_route -->|"mantém configuração"| node_database
node_domains_route -->|"mantém domínios"| node_database
node_whatsapp_route -->|"mantém automações"| node_database
node_queue_worker -->|"reivindica jobs"| node_database
node_queue_worker -->|"seleciona adapter"| node_crm_registry
node_crm_registry -->|"despacha CRM"| node_crm_adapters
node_queue_worker -->|"envia mensagens"| node_evolution_service
node_crm_adapters -.->|"cria ou atualiza lead"| node_crm_service
node_evolution_service -.->|"valida e envia"| node_evolution_api

click node_app_ui "https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/App.jsx"
click node_login_ui "https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/paginas/Login.jsx"
click node_admin_ui "https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/paginas/admin/Empresas.jsx"
click node_forms_ui "https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/paginas/empresa/Formularios.jsx"
click node_install_ui "https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/paginas/empresa/Implementar.jsx"
click node_embed_gen "https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/lib/embeds.js"
click node_leads_ui "https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/paginas/empresa/Leads.jsx"
click node_crm_ui "https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/paginas/empresa/Crm.jsx"
click node_whatsapp_ui "https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/paginas/empresa/Whatsapp.jsx"
click node_domains_ui "https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/paginas/empresa/Dominios.jsx"
click node_api_client "https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/lib/api.js"
click node_api_app "https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/app.js"
click node_auth_route "https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/rotas/auth.js"
click node_admin_route "https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/rotas/admin.js"
click node_capture_route "https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/rotas/captura.js"
click node_forms_route "https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/rotas/formularios.js"
click node_leads_route "https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/rotas/leads.js"
click node_crm_route "https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/rotas/crm.js"
click node_domains_route "https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/rotas/dominios.js"
click node_whatsapp_route "https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/rotas/whatsapp.js"
click node_database "https://github.com/guiacc12/tcc-grupo-2/blob/main/db/schema.sql"
click node_queue_worker "https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/servicos/fila.js"
click node_crm_registry "https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/servicos/crm/index.js"
click node_crm_adapters "https://github.com/guiacc12/tcc-grupo-2/tree/main/backend/src/servicos/crm"
click node_evolution_service "https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/servicos/evolution.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app_ui,node_login_ui,node_admin_ui,node_forms_ui,node_install_ui,node_embed_gen,node_leads_ui,node_crm_ui,node_whatsapp_ui,node_domains_ui,node_api_client toneBlue
class node_api_app,node_auth_route,node_admin_route,node_capture_route,node_forms_route,node_leads_route,node_crm_route,node_domains_route,node_whatsapp_route toneAmber
class node_database,node_queue_worker,node_evolution_api toneMint
class node_crm_registry,node_crm_adapters,node_evolution_service toneRose
class node_company_user,node_admin_user,node_lead_visitor,node_crm_service toneIndigo
```

## Components

### Painéis e captura

- [Rotas do painel](https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Login](https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/paginas/Login.jsx): `frontend/src/paginas/Login.jsx`
- [Empresas admin](https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/paginas/admin/Empresas.jsx): `frontend/src/paginas/admin/Empresas.jsx`
- [Formulários](https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/paginas/empresa/Formularios.jsx): `frontend/src/paginas/empresa/Formularios.jsx`
- [Implementação](https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/paginas/empresa/Implementar.jsx): `frontend/src/paginas/empresa/Implementar.jsx`
- [Gerador de embeds](https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/lib/embeds.js): `frontend/src/lib/embeds.js`
- [Leads e visão geral](https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/paginas/empresa/Leads.jsx): `frontend/src/paginas/empresa/Leads.jsx`
- [Configuração CRM](https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/paginas/empresa/Crm.jsx): `frontend/src/paginas/empresa/Crm.jsx`
- [Configuração WhatsApp](https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/paginas/empresa/Whatsapp.jsx): `frontend/src/paginas/empresa/Whatsapp.jsx`
- [Domínios](https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/paginas/empresa/Dominios.jsx): `frontend/src/paginas/empresa/Dominios.jsx`
- [Cliente API](https://github.com/guiacc12/tcc-grupo-2/blob/main/frontend/src/lib/api.js): `frontend/src/lib/api.js`

### API e configuração

- [Aplicação Express](https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/app.js): `backend/src/app.js`
- [Autenticação](https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/rotas/auth.js): `backend/src/rotas/auth.js`
- [Administração](https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/rotas/admin.js): `backend/src/rotas/admin.js`
- [Captura pública](https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/rotas/captura.js): `backend/src/rotas/captura.js`
- [Gestão de formulários](https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/rotas/formularios.js): `backend/src/rotas/formularios.js`
- [Gestão de leads](https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/rotas/leads.js): `backend/src/rotas/leads.js`
- [Rotas CRM](https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/rotas/crm.js): `backend/src/rotas/crm.js`
- [Rotas de domínios](https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/rotas/dominios.js): `backend/src/rotas/dominios.js`
- [Rotas WhatsApp](https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/rotas/whatsapp.js): `backend/src/rotas/whatsapp.js`

### Processamento de leads

- [MySQL saas_leads](https://github.com/guiacc12/tcc-grupo-2/blob/main/db/schema.sql): `db/schema.sql`
- [Fila e worker](https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/servicos/fila.js): `backend/src/servicos/fila.js`

### Integrações externas

- [Seleção de adapter](https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/servicos/crm/index.js): `backend/src/servicos/crm/index.js`
- [Adapters CRM](https://github.com/guiacc12/tcc-grupo-2/tree/main/backend/src/servicos/crm): `backend/src/servicos/crm`
- [Serviço Evolution](https://github.com/guiacc12/tcc-grupo-2/blob/main/backend/src/servicos/evolution.js): `backend/src/servicos/evolution.js`

### Other components

- **Usuário empresa**
- **Super admin**
- **Visitante**
- **CRM externo**
- **Evolution API**

## Connections

- Usuário empresa → Login: acessa
- Super admin → Login: acessa
- Login → Cliente API: envia login
- Cliente API → Aplicação Express: chama API
- Aplicação Express → Autenticação: monta rotas
- Aplicação Express → Administração: monta rotas
- Aplicação Express → Captura pública: monta rotas
- Aplicação Express → Gestão de formulários: monta rotas
- Aplicação Express → Gestão de leads: monta rotas
- Aplicação Express → Rotas CRM: monta rotas
- Aplicação Express → Rotas de domínios: monta rotas
- Aplicação Express → Rotas WhatsApp: monta rotas
- Empresas admin → Cliente API: gerencia empresas
- Formulários → Cliente API: edita formulários
- Implementação → Gerador de embeds: gera código
- Formulários → Cliente API: carrega e salva
- Leads e visão geral → Cliente API: consulta leads
- Configuração CRM → Cliente API: configura CRM
- Configuração WhatsApp → Cliente API: configura automações
- Domínios → Cliente API: configura domínios
- Cliente API → Aplicação Express: chama endpoints
- Visitante → Gerador de embeds: usa formulário
- Gerador de embeds → Captura pública: envia captura
- Autenticação → MySQL saas_leads: consulta credenciais
- Administração → MySQL saas_leads: mantém empresas
- Captura pública → MySQL saas_leads: grava lead
- Gestão de formulários → MySQL saas_leads: mantém formulários
- Gestão de leads → MySQL saas_leads: consulta leads
- Rotas CRM → MySQL saas_leads: mantém configuração
- Rotas de domínios → MySQL saas_leads: mantém domínios
- Rotas WhatsApp → MySQL saas_leads: mantém automações
- Fila e worker → MySQL saas_leads: reivindica jobs
- Fila e worker → Seleção de adapter: seleciona adapter
- Seleção de adapter → Adapters CRM: despacha CRM
- Fila e worker → Serviço Evolution: envia mensagens
- Adapters CRM → CRM externo: cria ou atualiza lead
- Serviço Evolution → Evolution API: valida e envia
