Plataforma completa de luzes de arbitragem para competições de Powerlifting seguindo as regras da IPF. Funciona online ou em rede local sem internet. Cinco interfaces web compartilham o mesmo estado em tempo real via Socket.IO e podem ser abertas em diferentes dispositivos:
/– painel administrativo que cria/recupera sessões, gera QR Codes, controla o timer e acompanha o estado da plataforma/display– display em tela cheia com as três luzes, cronômetro, intervalo e badges de cooldown/timer– painel de controle autônomo para timer/intervalo com badges de cooldown/legend– painel complementar para transmissão/mesa técnica com layout personalizável/ref/<judge>– consoles individuais (left, center, right) com votos e cartões IPF
O painel administrativo continua acessível em
/adminpara compatibilidade com links antigos.
Cada sessão possui roomId e PIN. O painel gera automaticamente os QR Codes dos árbitros e links de exibição/legenda, além de permitir a rotação dos tokens quando necessário.
- Baixe o arquivo
referee-lights-windows.zipna página de Releases - Clique com o botão direito → Extrair tudo...
- Abra a pasta extraída e dê duplo-clique em Iniciar.cmd
- O navegador abrirá automaticamente com a plataforma
- Compartilhe os QR Codes com os árbitros (mesma rede Wi-Fi)
Para encerrar, pressione qualquer tecla na janela do Iniciar.
cd server
cp .env.example .env
npm install
npm run devO servidor sobe em http://localhost:3333.
cd ../frontend
cp .env.example .env.local
npm install
npm run devAponte o navegador para http://localhost:3000 nas rotas desejadas.
Ajuste
NEXT_PUBLIC_WS_URLeNEXT_PUBLIC_API_URLno.env.localpara o endereço público do servidor quando estiver em rede.
| Variável | Descrição | Padrão |
|---|---|---|
PORT |
Porta do servidor | 3333 |
CORS_ORIGIN |
Origens permitidas | — |
LOG_LEVEL |
Nível de log (debug, info, warn, error) | info |
- Criar nova sessão – gera
roomId, PIN administrativo, tokens dos árbitros e links diretos de display/legenda - Entrar em sessão existente – retoma uma plataforma informando
roomId+ PIN - QR Codes – exibe os códigos de cada árbitro, com botão para gerar novos links (pede confirmação antes de revogar os tokens atuais)
- Ready / Release / Clear – controla o fluxo padrão das luzes e o timer de 60 s
- Timer – start/stop/reset e ajuste rápido de minutos
- Intervalo – programa tempo de troca, alterna entre aviso vermelho e painel principal
- O contador do intervalo emite toques curtos nos últimos 10 s e um sinal longo quando o tempo de troca atinge zero. Após 1 s, a mensagem
TROCA DE PEDIDAS ENCERRADAsubstitui o display vermelho. - O cronômetro principal também sinaliza os últimos 10 s com bipes curtos e dispara três beeps rápidos no segundo final.
- Por regras dos navegadores, os sons só tocam depois que o operador interage com a página (clique/tecla).
- Acesse
/, crie uma nova sessão e copie oroomId/PIN. - Abra o display em
/display?roomId=ABCD&pin=1234e coloque em tela cheia. - Compartilhe os QR Codes com os árbitros (cada um abre o console apropriado).
- Se precisar rotacionar a equipe, abra o modal de QR Codes e confirme "Gerar novos links".
- Use o botão "Legenda" para abrir a tela complementar (
/legend?roomId=ABCD&pin=1234). - Fluxo padrão: Ready → árbitros votam → Release → decisão exibida → Clear.
- Ajuste o tempo padrão editando
INITIAL_TIMERemserver/src/state.ts. - Para alterar tokens/tempo de expiração, veja
server/src/rooms.tseRoomManager. - Aparência do painel admin em
frontend/src/pages/admin.tsx. - Ajustes de escala do display/cronômetro em
frontend/src/pages/display.tsxefrontend/src/components/TimerDisplay.tsx. - Alertas sonoros em
frontend/src/components/IntervalFull.tsx.
O Key Relay é embutido no servidor e controlado pelo painel admin (toggle "Ativar Key Relay", protegido pelo PIN da sala). Quando a decisão é revelada, o servidor envia a tecla configurada para a janela em foco na máquina onde ele roda:
F1com pelo menos dois votos brancos (válido);F10com pelo menos dois votos vermelhos (inválido).
As teclas podem ser trocadas no modal (F1–F12 ou uma letra/dígito, com até três modificadores). Funciona no Windows (SendKeys), no macOS (System Events — exige permissão de Acessibilidade) e no Linux (xdotool). Disponível só quando o servidor roda com KEY_RELAY_AVAILABLE=true (padrão no pacote Windows).
- Server: Docker (
server/Dockerfile) ou qualquer plataforma Node 20+. Bastanpm run buildenpm start. - Frontend: Vercel ou semelhante. Configure
NEXT_PUBLIC_WS_URLeNEXT_PUBLIC_API_URLapontando para o domínio do servidor. - Docker: monte um volume em
/app/datapara persistir os dados.





