Об этом проекте
WattRoom — это open-source платформа для совместных внутренних велотренировок с возможностью самохоста, разработанная Natron и выпущенная под лицензией AGPL-3.0. Её основная идея: одиночные Indoor-тренировки скучны, и вместо виртуального мира проект делает ставку на присутствие: райдеры присоединяются к комнате со своими партнёрами по тренировкам, выполняют одну и ту же интервальную программу, масштабированную под собственный FTP каждого, и могут общаться, видеть друг друга и делить музыку во время езды.
Что включено
- Комнаты: на одном приборе показываются живые ватты, пульс и каденс, есть лента комнаты и таймлайн интервалов, а голос и камера доступны одним нажатием.
- Структурированные тренировки: собранная библиотека плюс редактор, с точным ERG-управлением над умными тренажёрами по BLE FTMS. Целевые значения масштабируются под FTP каждого райдера, поэтому группа может выполнить одну сессию вместе независимо от их показателей.
- Игровые режимы: семь из них, включая спринтерские сигналы, elimination, Watt Golf и Backyard Ramp.
- Общий джукбокс: одна синхронизированная YouTube-дорожка на комнату.
- Учитываемые поездки: сессии сохраняются, могут быть экспортированы в формате .fit, загружены в Strava, а также приносят XP и трофеи.
- Конфиденциальность: метрики ограничены рамками комнаты, аудио/видео не записываются; комнаты по умолчанию приватные.
Оборудование и браузеры
Умный тренажёр с поддержкой BLE FTMS является целевым оборудованием; связь напрямую с браузером через Web Bluetooth. Из-за этого тренировочный путь сегодня доступен только в Chromium: Chrome и Edge на десктопе и Android. До-FTMS устройства Wahoo указаны как открытая задача в бэклоге. Тренировочного пути для iOS нет, потому что Safari не реализует Web Bluetooth; проект фиксирует это как обдуманное решение, а не упущение. Сама комната открывается в любом браузере, а функционал, требующий тренажёр, просто недоступен, без создания отдельной страницы только для чтения. Для разработки тренажёр не требуется: предусмотрены симулятор тренажёра и полная mock-комната по адресу /dev/room.
Стек и развёртывание
Go-сервер с ин-мемори комнатным хабом (одна горуттина на комнату), SvelteKit SPA, PostgreSQL и самохостинговый LiveKit, упакованные в один бинарный файл с встроенным фронтендом и развёртываемые как один compose-стек на одной VM. Для разработки требуются Go 1.26+, Node 22+, pnpm и Docker; цели make поднимают Postgres и LiveKit в контейнерах, запускают hot-reloading сервер на порту 8080 и Vite dev server на порту 5174, который проксирует /api и /ws.
Документация и релизы
Архитектурные и спецификационные документы сопровождаются founding document, фиксирующим продуктовые и архитектурные решения, research документом и нумерованными ADR. Релизы выпускаются несколько раз в день: каждый релиз содержит лишь небольшое уже смерженное изменение, а откат сводится к указанию запускаемого образа на предыдущий тег без вмешательства в базу данных.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.