Pular para o conteúdo principal

Arquitetura do Sistema

O Zenovay é construído como um sistema distribuído de quatro serviços interconectados, cada um otimizado para seu papel específico. Entender como eles trabalham juntos é essencial para desenvolvimento e depuração eficazes.

Visão Geral dos Serviços

Nossa plataforma consiste em quatro serviços principais, cada um implantado independentemente na rede de borda da Cloudflare:

  • Landing (zenovay.com) — Site de marketing e páginas públicas. Exportação estática Next.js otimizada para SEO e carregamento rápido.
  • Auth (auth.zenovay.com) — Serviço centralizado de autenticação. Lida com login, cadastro, OAuth, SSO e fluxos de MFA.
  • App (app.zenovay.com) — Dashboard principal de análise. Visualização de dados em tempo real, replay de sessão e gerenciamento de equipe.
  • API (api.zenovay.com) — Serviços de backend. Rastreamento de eventos, processamento de dados, faturamento e integrações de terceiros.

Comunicação Entre Serviços

Os serviços se comunicam por meio de padrões bem definidos que mantêm a segurança enquanto permitem experiências de usuário perfeitas:

  • Auth → App: Após autenticação bem-sucedida, os usuários são redirecionados para o app com tokens seguros. O estado da sessão é sincronizado entre abas usando a BroadcastChannel API.
  • App → API: O dashboard faz requisições autenticadas para a API usando tokens bearer. Todas as consultas de análise, operações de faturamento e mutações de dados fluem por aqui.
  • Rastreamento → API: O script de rastreamento leve (<5KB) envia eventos diretamente para a API via requisições POST para endpoints amigáveis a bloqueadores de anúncios.

Fluxo de Tokens

A autenticação segue um fluxo seguro entre os serviços:

  • O usuário faz login em auth.zenovay.com
  • O Supabase emite tokens de acesso e atualização
  • Os tokens são armazenados em cookies httpOnly para proteção contra XSS
  • O App valida tokens em cada requisição via middleware
  • Os endpoints de API verificam tokens bearer para autorização
  • Os tokens de atualização rotacionam automaticamente para evitar reutilização

Implantação na Cloudflare

Aproveitamos extensivamente o ecossistema da Cloudflare para desempenho e confiabilidade:

  • Pages: Hospedagem de sites estáticos para frontends do landing e app
  • Workers: Funções de API serverless rodando na borda
  • KV: Armazenamento chave-valor para limitação de taxa, bloqueios de sessão e mapeamento de endpoints personalizados
  • R2: Armazenamento de objetos para avatares de equipe e gravações de sessão
  • Turnstile: Proteção contra bots sem atrito para o usuário

Arquitetura de Banco de Dados

O Supabase (PostgreSQL) serve como nosso banco de dados primário com várias decisões de design-chave:

  • Multi-tenancy baseado em equipes: Todos os dados são escopados para equipes, não usuários individuais. Isso permite colaboração por padrão.
  • Row Level Security (RLS): Políticas no nível do banco de dados garantem que os usuários só possam acessar dados que estão autorizados a ver.
  • Assinaturas em tempo real: Dados de visitantes ao vivo fluem para os dashboards via canais em tempo real do Supabase.
  • Gatilhos para aplicação: Limites de plano e rastreamento de uso são aplicados no nível do banco de dados, não apenas no código da aplicação.