Case study — Produto próprio

FIFA Queue

Aplicativo para times competitivos encontrarem partidas de forma justa e previsível — com uma fila de matchmaking cuja autoridade fica sempre no servidor, nunca no cliente.

Flutter Supabase Realtime Edge Functions FCM

Visão do produto

Times formam grupos, entram numa fila de busca por adversário e recebem uma partida assim que houver um par compatível disponível. O app cobre todo o ciclo: criação de time e convites, entrada na fila, formação da partida e notificação em tempo real.

Desafio arquitetural — matchmaking confiável

O ponto central do FIFA Queue é garantir que o pareamento de partidas seja consistente mesmo com múltiplos clientes agindo ao mesmo tempo. Toda decisão de matchmaking acontece no servidor (Postgres + Edge Functions), nunca no app: fila FIFO, lock por time — cada time só pode ter uma busca ativa por vez — e um padrão de transactional outbox para garantir que eventos de partida e notificações sejam entregues de forma consistente, mesmo em caso de falha parcial.

Team Queue (FIFO) Server Authority Match Realtime sync

Principais recursos

Times & membrosCriação de time, convites e gestão de membros.
Fila de buscaUma busca ativa por time, com expiração automática.
Matchmaking server-sidePareamento decidido inteiramente no backend.
NotificaçõesPush via FCM para eventos de fila e partida.
Estado em tempo realSincronização via Supabase Realtime.
Row Level SecurityAcesso a dados restrito por time/usuário no Postgres.

Stack técnica

Mobile

  • Flutter
  • Dart

Backend

  • Supabase
  • PostgreSQL
  • Edge Functions
  • Row Level Security
  • Realtime

Mensageria

  • FCM
  • Transactional outbox

Prévia

Screenshots do produto em preparação