Voltar ao blog

    Arquitetura de Sistemas para Eventos Esportivos: O Que Aprendemos na LargaAí

    LargaAí

    Introdução

    Este artigo é para desenvolvedores, CTOs e organizadores técnicos que querem entender como construímos a LargaAí. Compartilhamos decisões de arquitetura, trade-offs e lições aprendidas.

    Stack Técnico

    • Frontend: React 18 + TypeScript + Vite + Tailwind CSS
    • Backend: Supabase (PostgreSQL + Auth + Storage + Edge Functions)
    • Pagamentos: Mercado Pago (Pix + Cartão)
    • CDN/Segurança: Cloudflare (Turnstile + DNS)
    • IA: Edge Functions com contexto de evento

    Row-Level Security: Segurança no Banco

    A decisão mais importante da nossa arquitetura: RLS em todas as tabelas.

    Cada tabela tem políticas que definem quem pode ler, inserir, atualizar e deletar. Exemplos:

    • events: público pode ler eventos aprovados; apenas o organizador pode editar os seus
    • registrations: atleta vê apenas suas inscrições; organizador vê apenas inscritos nos seus eventos
    • profiles: cada usuário acessa apenas seu próprio perfil; dados públicos via view public_profiles

    Por que não confiar apenas na API?

    APIs podem ter bugs. Um endpoint mal configurado pode expor dados de todos os usuários. Com RLS, mesmo que a API falhe, o banco de dados impõe as regras de acesso.

    Edge Functions: Lógica no Edge

    Usamos Edge Functions (Deno) para operações que precisam de:

    • Segredo: chaves do Mercado Pago, tokens de e-mail
    • Validação server-side: verificação de Turnstile, validação de pagamento
    • Integração externa: webhooks, envio de e-mails, resolução de rotas Strava/Garmin

    Exemplos de funções:

    • mercadopago-webhook: recebe notificação de pagamento e atualiza status
    • send-registration-confirmation: envia e-mail com QR Code após confirmação
    • generate-sitemap: gera sitemap XML dinâmico com todos os eventos

    Schema.org: Dados Estruturados

    Cada evento na LargaAí gera um JSON-LD SportsEvent com:

    • Nome, data, local (cidade + estado)
    • Faixa de preço (do lote atual)
    • Status de disponibilidade (InStock, LimitedAvailability, SoldOut)
    • Organizador (com link para perfil)

    Isso permite que Google, ChatGPT e Gemini mostrem informações do evento diretamente nas buscas.

    Sitemap Dinâmico

    O sitemap é gerado em tempo real via Edge Function, incluindo:

    • Todas as páginas estáticas
    • Landing pages por cidade (19 cidades)
    • Páginas de distância por cidade (5K, 10K, meia-maratona, maratona)
    • Todos os eventos aprovados (com slug amigável)
    • Todos os artigos do blog

    Triggers de Proteção

    Campos financeiros são protegidos por triggers PostgreSQL:

    • amount_paid, platform_fee, mp_fee são imutáveis após criação
    • payment_status só muda por processos autorizados
    • used_count de cupons é controlado por trigger, não por API

    IA Integrada: Larga AI

    A IA não é um chatbot genérico. Ela recebe contexto real do evento:

    • Dados de inscrições, receita, lotes
    • Comparação com eventos similares na região
    • Histórico de crescimento

    E gera recomendações específicas — não genéricas.

    Lições Aprendidas

    1. RLS primeiro: começar com RLS desde o dia 1 é muito mais fácil do que retrofitar
    2. Edge Functions para segredos: nunca exponha chaves de API no frontend
    3. Schema.org cedo: dados estruturados desde o início acumulam autoridade
    4. Triggers > validação de API: triggers são a última linha de defesa

    Conclusão

    Construir uma plataforma de eventos é muito mais que um CRUD. Segurança, performance, SEO e IA precisam ser decisões de arquitetura — não afterthoughts.

    Crie seu evento na LargaAí — uma plataforma construída por engenheiros que entendem de eventos.

    Veja também: como funciona uma plataforma de eventos | plataforma segura para eventos

    Perguntas Frequentes

    Por que usar Edge Functions para eventos?

    Edge Functions rodam próximo ao usuário, reduzindo latência. Na LargaAí, usamos para checkout, webhooks de pagamento, envio de e-mails e geração de sitemap — todas operações que precisam de resposta rápida.

    O que é Row-Level Security e por que importa?

    RLS é uma camada de segurança no PostgreSQL que garante que cada consulta respeite regras de acesso. Mesmo que um bug na API exponha dados, o banco rejeita a consulta se o usuário não tem permissão.

    Como Schema.org ajuda eventos esportivos?

    Schema.org SportsEvent permite que Google, ChatGPT e outros serviços entendam automaticamente: nome do evento, data, local, preço e disponibilidade de vagas. Isso melhora visibilidade em buscas e respostas de IA.

    Outros artigos