Sobre o projeto
WattRoom é uma plataforma open-source e auto-hospedável para ciclismo indoor colaborativo, criada pela Natron e lançada sob a licença AGPL-3.0. Sua premissa é que o treino indoor é entediante em solitário; em vez de oferecer um mundo virtual, o projeto aposta na presença: os ciclistas entram em uma sala com seus parceiros de treino, realizam o mesmo treino escalado conforme a FTP de cada um e podem conversar, se ver e compartilhar música durante a pedalada.
O que oferece
- Salas: potência, frequência cardíaca e cadência exibidos em conjunto em um painel, com feed da sala e linha do tempo de intervalos, além de voz e câmera com um clique.
- Treinos estruturados: uma biblioteca curada mais um editor, com controle preciso de ERG sobre trainers inteligentes BLE FTMS. As metas são escaladas à FTP de cada ciclista, permitindo que um grupo faça uma sessão juntos independentemente dos números de cada um.
- Modos de jogo: sete deles, incluindo klaxon de sprint, eliminações, Watt Golf e Backyard Ramp.
- Jukebox compartilhada: uma trilha sonora sincronizada do YouTube por sala.
- Pedaladas que contam: as sessões são salvas, podem ser exportadas como .fit, enviadas ao Strava e rendem XP e troféus.
- Privacidade: as métricas são limitadas à sala e áudio/vídeo nunca são gravados; as salas são privadas por padrão.
Hardware e navegadores
Um trainer inteligente que suporte BLE FTMS é o hardware-alvo, conectado diretamente do navegador via Web Bluetooth. Isso torna o caminho de treinamento atualmente exclusivo para Chromium: Chrome e Edge no desktop e Android. Unidades Wahoo pré-FTMS estão listadas como item em aberto na backlog. Não há caminho de treinamento para iOS, pois o Safari não implementa Web Bluetooth; o projeto documenta isso como uma decisão pesquisada, não como uma negligência. A sala em si ainda abre em qualquer navegador, com as funcionalidades que exigem trainer bloqueadas ao invés de uma página apenas para leitura. Para desenvolvimento, nenhum trainer é necessário: um trainer simulado e uma sala mock completa em /dev/room estão disponíveis.
Stack e implantação
Um servidor Go com um hub de salas em memória (um goroutine por sala), um SPA SvelteKit, PostgreSQL e LiveKit auto-hospedado, distribuído como um único binário com frontend embutido e implantado como uma stack compose em uma única VM. O desenvolvimento requer Go 1.26+, Node 22+, pnpm e Docker; os make targets sobem Postgres e LiveKit em contêineres, executam o servidor com hot-reload na porta 8080 e iniciam o Vite dev server na porta 5174, que faz proxy de /api e /ws.
Documentação e releases
Documentos de arquitetura e especificação ficam ao lado de um documento fundacional que registra decisões de produto e arquitetura, um documento de pesquisa e ADRs numerados. Os releases são feitos várias vezes ao dia: um release adiciona apenas uma pequena alteração já mesclada, e reverter um release significa apontar a imagem em execução para a tag anterior sem tocar no banco de dados.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.