Pular para o conteúdo
brorn
Nº 004 · Esporte e vídeo

douro.united

App da pelada semanal: elenco, sorteio de times equilibrados, placar ao vivo, estatísticas, vídeo do jogo e app para o Apple Watch.

No ar
Período
2026-08 → hoje
Plataformas
iPhone · Apple Watch · Web
Papel
Sozinho: design, código e entrega
Tecnologias
Fig. 1 · Jogo ao vivo
Fig. 2 · Ranking
Fig. 3 · Card de compartilhar

§1O problema

Organizar uma pelada toda semana (quem vem, times parelhos, placar e histórico) era feito em conversa de grupo e de cabeça.

§2O que eu construí

  • PWAApp web instalável com 4 abas: jogadores, jogo, histórico e estatísticas.
  • Nível do jogadorVisível no app, mas oculto nos cards compartilhados.
  • Sorteio de timesNível sugerido por heurística explicável (nunca aplicado sozinho).
  • Importar elencoA partir das mensagens do grupo, com um modelo de IA.
  • CompartilharCard de jogo para compartilhar (imagem) e vídeo com cortes, como no match.day.
  • App do relógioApple Watch e iPhone (gravar, marcar gols); mock do servidor para testar sem relógio.

§3As partes difíceis

5 itens
  1. 01

    Reescrita em monorepo no mesmo padrão do match.day

    Servidor, web e tipos compartilhados, por fases com testes.

  2. 02

    Migração de banco

    Backup antes de migrar e hash de cada migração.

  3. 03

    Offline

    Service worker, fila e cópia local, com reenvio seguro em lote.

  4. 04

    Duas câmeras

    O iPhone procura a outra câmera ao abrir.

  5. 05

    Guarda de acesso local

    Lista de hosts permitidos, recusa de requisições cross-site e IPs validados por inteiro.

§4Resultado

Em produção no meu servidor em casa (web e API). Todas as etapas do plano, incluindo o app do relógio e as duas câmeras, foram concluídas e testadas com quem usa o relógio. O compartilhamento do card já foi testado num iPhone de verdade e funciona.

§5Stack

  • Next.js 16
  • React 19
  • TypeScript 7
  • Tailwind 4
  • Zustand
  • SQLite (better-sqlite3)
  • ffmpeg
  • SwiftUI / watchOS
  • pm2
  • Tailscale