Paneleiro
App de futebol para torcedores, no iPhone e no Android: partidas em tempo real, notificações e melhores momentos.
- Papel
- Founding Engineer (primeiro engenheiro)
- Período
- 2025 – 2026

Visão geral
Um app de futebol para torcedores, no iPhone e no Android, publicado como Paneleiro App. O torcedor avalia jogadores, técnicos e árbitros, monta escalações e acompanha as partidas ao vivo, com notificações e melhores momentos.
Um monorepo reúne o app em Flutter, o site administrativo em Nuxt e o backend em .NET 8.
O que construí
- 01Construí a Web API em .NET 8 por trás do app e do painel administrativo: jobs recorrentes no Hangfire monitoram as partidas ao vivo e enviam atualizações aos clientes via SignalR, com dados da Sportmonks, push pela OneSignal e um pipeline de melhores momentos (ScoreBat + FFmpeg + S3).
- 02Acabei com o esgotamento de conexões e as notificações duplicadas nos jogos de maior audiência (os da Seleção), trocando chamadas HTTPS paralelas por usuário por envios em lote na OneSignal, e tornei a marcação de “já enviado” independente de falhas no push.
- 03Adicionei uma proteção que encerra jobs recorrentes órfãos, canários de frescor de dados com alertas por e-mail e um teste de regressão para cada bug de produção. Corrigi um canário que media a coisa errada em silêncio.
Estudos de caso
Quando um gol da Seleção derrubou as notificações
Problema
Nos jogos da Seleção, os momentos de maior tráfego, as notificações de fim de jogo abriam uma chamada HTTPS por usuário em paralelo, esgotavam as conexões e falhavam. Como a marcação de “enviado” só era gravada no sucesso, cada execução do job recorrente reenviava o push, por cerca de 30 minutos.
O que fiz
- Passei a enviar em lotes de 100 pela OneSignal.
- Tornei a marcação de “já enviado” independente de falhas no push.
- Adicionei uma proteção contra jobs recorrentes órfãos, depois de achar um que rodava a cada 10 segundos havia meses: o Hangfire persiste os jobs no MySQL.
- Adicionei canários de frescor de dados com alertas por e-mail e corrigi um que media a coisa errada em silêncio.
- Escrevi um teste de regressão para cada bug.
Lição
Projetar para retentativas e contenção de falhas, e ser dono da produção.
Stack
- C#
- .NET 8
- EF Core
- Hangfire
- SignalR
- Redis
- MySQL
- Flutter
- MobX
- Nuxt
- Sportmonks
- OneSignal
- FFmpeg
- AWS S3
- Firebase
Quer os detalhes por trás disso?