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