# 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) ```mermaid graph TB User[Usuário
Mobile/Desktop] -->|HTTP| Ingress[Nginx Ingress
portal.automatizase.com] subgraph K8s["Kubernetes Cluster"] Ingress -->|Route| Service[Service
ClusterIP:80] Service --> Pod[Pod
NextJS Container
porta 3000] Pod -->|Auth + DB| Supabase Pod -->|API Calls| EvolutionAPI Pod -->|OAuth Redirect| n8n end subgraph External["Serviços Externos"] Supabase[(Supabase
Auth + PostgreSQL)] EvolutionAPI[EvolutionAPI
WhatsApp] n8n[n8n
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 ---