§1O problema
Registrar um jogo (quem jogou, gols, minutos) e depois achar os lances no vídeo dá muito trabalho manual. Não existia uma ferramenta que juntasse o placar feito no relógio com o vídeo do jogo e entregasse os cortes prontos.
§2O que eu construí
- App webPWA instalável para iPhone, iPad e computador: times, elenco, agenda, jogo, resultados e estatísticas, com tema claro/escuro.
- Modo jogoFunciona offline, com fila de envio quando a conexão volta.
- App do relógioApp em SwiftUI para marcar gols e fim de jogo, com complicação no mostrador, mais app companheiro no iPhone.
- ServidorAPI com banco SQLite.
- Fluxo de vídeoEnvio em partes, cortes ao redor de cada gol/lance e montagem dos melhores momentos com aceleração da placa de vídeo (NVENC).
- Duas câmerasGravação com 2 celulares, entregue ao video-campo para juntar as imagens.
§3As partes difíceis
5 itens- 01
Envio de vídeos grandes pelo celular
Upload em partes, retomável, com reprocessamento em fila.
- 02
Funcionar offline
O jogo continua sem internet e sincroniza depois, com reenvio seguro (sem duplicar gols).
- 03
Relógio e servidor falando o mesmo contrato de API
Com correção e anulação de gols.
- 04
Migrações do banco
Backup automático antes de qualquer mudança no esquema do banco.
- 05
Guarda de acesso local e tipos compartilhados
Proteção contra ataques de navegador (DNS rebinding) e monorepo com tipos compartilhados entre servidor e tela.
§4Resultado
Está em produção no meu servidor em casa, e eu uso pelo celular numa rede privada. Todas as etapas do plano (app web, servidor e relógio) foram concluídas, e o app do relógio foi testado num aparelho de verdade.
§5Stack
- Next.js 16
- React 19
- TypeScript
- Zustand
- SQLite
- ffmpeg (NVENC)
- SwiftUI / watchOS
- pm2
- Tailscale
- Testes unitários e e2e