Dia de competição
Check-in, arbitragem, pontuação e transmissão ao vivo para eventos Fitofan
Cinco apps que gerem um torneio no local: check-in e arbitragem num computador, consolas de juiz em telemóveis e tablets, uma ponte para o hardware de pontuação, câmaras de telemóvel que transmitem com um marcador ao vivo e replay multicâmara.
- Função
- Lead Engineer: Flutter, iOS e Android nativos, desktop
- Período
- 2024 – 2026


Contexto
Os torneios acontecem em pavilhões desportivos com Wi-Fi pouco fiável, hardware emprestado e sem tempo para configurações. O ecossistema Fitofan precisava do seu próprio software de recinto, e construí cada parte dele de raiz.
O desafio
Manter o check-in, a arbitragem e a transmissão a funcionar quando a internet cai, deixar qualquer telemóvel ou tablet entrar ao ler um código QR e devolver os resultados à plataforma e a sistemas de pontuação de terceiros.
Construído em todas as camadas
- Fitofan Core, Flutter desktop para macOS, Windows e Chromebook: check-in com pagamentos e impressão de credenciais QR, arbitragem para judo e MMA, sorteios e quadros, um segundo processo para o ecrã de TV
- Fitofan Touch, Flutter para telemóveis e tablets: uma consola de juiz com 10 conjuntos de regras, do taekwondo WT e ITF e do karaté WKF à ginástica e ao breaking, com háptica e um modelo de input sensível à conectividade
- Fitofan Connect, Flutter desktop: uma base de dados de resultados em SQLite e uma API HTTP local que faz a ponte para pontuação eletrónica de terceiros
- LiveOn, nativo em Swift e Kotlin: transmissão configurada por QR para o Amazon IVS com um misturador de três camadas de câmara, logótipo e marcador ao vivo sobreposto
- VR, Electron: até quatro câmaras de telemóvel, USB ou RTSP sobre WebRTC, replay instantâneo e corte de clips com ffmpeg, retransmissão para o YouTube, licenciamento offline, builds assinadas e notarizadas para macOS, Windows e Linux
Destaques de engenharia
- Offline-first: uma fila de saída persistente é despachada para a plataforma quando a ligação volta
- Um protocolo LAN escrito à mão: descoberta por broadcast UDP, sessões TCP com reconexão, uma ligação loopback para a janela de TV
- Sobreposições do marcador renderizadas nativamente e compostas no fluxo de vídeo uma vez por segundo
- Um feed de pontuação ao vivo sobre Socket.IO controla a sobreposição no iOS e a deteção automática dos limites de cada combate na app de replay
O que permite
Um organizador chega com portáteis e telemóveis e gere inscrições, arbitragem, pontuação e transmissão a partir de um único ecossistema, com ou sem ligação.