Dashboard-Automatizase/docs/architecture/arquitetura-de-alto-nvel.md
2025-10-05 21:17:43 -03:00

3.7 KiB

Arquitetura de Alto Nível

Resumo Técnico

O AutomatizaSE Portal é uma POC simples com NextJS 14+ App Router containerizado em Docker, deployado em Kubernetes usando manifests básicos. Utiliza Supabase como backend completo (auth, database PostgreSQL, recuperação de senha). O frontend NextJS renderiza páginas SSR e se comunica com API Routes que orquestram chamadas à EvolutionAPI (REST) e Supabase. OAuth do Google Calendar é delegado ao n8n. A aplicação roda em container Docker, exposta via Nginx Ingress. Arquitetura minimalista para deploy rápido em poucas horas.

Escolha de Plataforma e Infraestrutura

Plataforma: Kubernetes + Docker + Supabase (POC Simplificada)

Componentes Essenciais:

  • Docker: Containerização da aplicação NextJS
  • Kubernetes: Orquestração básica (deployment + service + ingress)
  • Nginx Ingress: Roteamento HTTP para o portal
  • Supabase: Auth + PostgreSQL (schema portal) + SMTP
  • EvolutionAPI: Integração REST WhatsApp (externo)
  • n8n: OAuth Google Calendar (externo)

Topologia Simples:

  • Namespace: automatizase-portal
  • Replicas: 1 pod (POC, sem HA)
  • Ingress: HTTP via Nginx Ingress, domínio portal.automatizase.com (HTTPS opcional)
  • Recursos: Limits mínimos (256Mi RAM, 100m CPU)

Justificativa:

  • Simplicidade: Setup rápido em poucas horas
  • Mínimo viável: Apenas o necessário para rodar NextJS em K8s
  • Supabase gerenciado: Reduz complexidade de backend

Estrutura do Repositório

Estrutura: Single NextJS App (monorepo não necessário para POC)

Ferramenta Monorepo: N/A

Organização de Pacotes:

  • Projeto NextJS único contendo frontend (/app, /components) e API routes (/app/api)
  • Shared types em /types (TypeScript interfaces compartilhadas entre frontend e backend)
  • Libs utilitárias em /lib (Supabase client, EvolutionAPI client, helpers)

Justificativa: Para POC simplificada, monorepo com múltiplos packages adiciona complexidade desnecessária. Single app NextJS oferece estrutura clara e setup rápido.

Diagrama de Arquitetura de Alto Nível (POC Simplificada)

graph TB
    User[Usuário<br/>Mobile/Desktop] -->|HTTP| Ingress[Nginx Ingress<br/>portal.automatizase.com]

    subgraph K8s["Kubernetes Cluster"]
        Ingress -->|Route| Service[Service<br/>ClusterIP:80]
        Service --> Pod[Pod<br/>NextJS Container<br/>porta 3000]

        Pod -->|Auth + DB| Supabase
        Pod -->|API Calls| EvolutionAPI
        Pod -->|OAuth Redirect| n8n
    end

    subgraph External["Serviços Externos"]
        Supabase[(Supabase<br/>Auth + PostgreSQL)]
        EvolutionAPI[EvolutionAPI<br/>WhatsApp]
        n8n[n8n<br/>Google Calendar OAuth]
    end

    Supabase -->|SMTP| Email[SMTP]
    n8n -->|Callback| Service

    style User fill:#4A90E2
    style Ingress fill:#009639
    style Service fill:#326CE5
    style Pod fill:#4A90E2
    style Supabase fill:#3ECF8E
    style EvolutionAPI fill:#25D366
    style n8n fill:#FF6D5A

Fluxo Simplificado:

  1. Usuário acessa portal.automatizase.com
  2. Nginx Ingress roteia para Service K8s (porta 80)
  3. Service encaminha para Pod NextJS (porta 3000)
  4. NextJS se comunica com Supabase (auth/DB) e EvolutionAPI (WhatsApp)

Padrões Arquiteturais (Simplificados para POC)

  • Containerized App: NextJS em Docker, deploy via K8s manifests simples
  • Component-Based UI: Componentes React com TailwindCSS (Shadcn/ui)
  • API Routes (BFF): /app/api/* centralizam comunicação com EvolutionAPI e Supabase
  • OAuth Delegation: Google Calendar via n8n (evita gerenciar credenciais)
  • Config via Env Vars: Secrets e configs via K8s ConfigMap/Secret