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.