Sobre el proyecto
WattRoom es una plataforma de código abierto y auto-alojable para el ciclismo indoor colaborativo, creada por Natron y lanzada bajo la licencia AGPL-3.0. Su premisa es que el entrenamiento indoor es aburrido en solitario y, en lugar de ofrecer un mundo virtual, se apoya en la presencia: los ciclistas se unen a una sala con sus compañeros de entrenamiento, realizan el mismo entrenamiento escalado al FTP de cada ciclista, y pueden hablar, verse y compartir música mientras pedalean.
Lo que abarca
- Salas: vatios, frecuencia cardíaca y cadencia en vivo mostrados juntos en un panel, con un feed de la sala y una línea de tiempo de intervalos, además de voz y cámara a un toque de distancia.
- Entrenamientos estructurados: una biblioteca curada más un editor, con control ERG preciso sobre entrenadores inteligentes BLE FTMS. Los objetivos se escalan al FTP de cada ciclista, permitiendo que un grupo realice una sesión juntos independientemente de sus cifras.
- Modos de juego: siete de ellos, incluyendo cláxones de sprint, eliminatorias, Watt Golf y Backyard Ramp.
- Jukebox compartido: una banda sonora de YouTube sincronizada por sala.
- Salidas que cuentan: las sesiones se guardan, pueden exportarse como .fit, subirse a Strava y permiten ganar XP y trofeos.
- Privacidad: las métricas están limitadas al ámbito de la sala y el audio/video nunca se graba; las salas son privadas por defecto.
Hardware y navegadores
El hardware objetivo es un entrenador inteligente que hable BLE FTMS, conectado directamente desde el navegador a través de Web Bluetooth. Esto hace que la ruta de entrenamiento sea actualmente exclusiva de Chromium: Chrome y Edge en escritorio y Android. Las unidades Wahoo anteriores a FTMS figuran como un elemento pendiente en el backlog. No existe una ruta de entrenamiento para iOS porque Safari no implementa Web Bluetooth; el proyecto documenta esto como una decisión investigada y no como un descuido. La sala en sí se abre en cualquier navegador, con las funciones que requieren un entrenador bloqueadas en lugar de tener una página separada de solo lectura. Para el desarrollo no se requiere un entrenador: se proporciona un entrenador simulado y una sala de prueba completa en /dev/room.
Stack y despliegue
Un servidor Go con un hub de salas en memoria (una goroutine por sala), una aplicación de página única SvelteKit, PostgreSQL y LiveKit auto-alojado, distribuido como un único binario con el frontend embebido y desplegado como un stack de compose en una sola VM. El desarrollo requiere Go 1.26+, Node 22+, pnpm y Docker; los targets de make levantan Postgres y LiveKit en contenedores, ejecutan el servidor con recarga en caliente en el puerto 8080 y arrancan el servidor de desarrollo Vite en el puerto 5174, que actúa como proxy para /api y /ws.
Documentación y versiones
Los documentos de arquitectura y especificaciones se encuentran junto a un documento fundacional que registra las decisiones de producto y arquitectura, un documento de investigación y ADRs numerados. Las versiones se lanzan varias veces al día: una versión solo añade un cambio pequeño ya fusionado, y revertirla significa volver a apuntar la imagen en ejecución a la etiqueta anterior sin tocar la base de datos.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.