OpenAthlete
AGPLv3 endurance training platform: EU-oriented hosting, transparent CTL/ATL/TSB logic in code, self-hosting, and full export. Built in Grenoble.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证ФИТНЕС ФРАКЦИЯ — Telegram Mini App: запись, баланс занятий, КБЖУ, сигналы тренера
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Telegram Mini App студии Евгения Рукши: запись на слоты, баланс занятий, программа, КБЖУ и CRM тренера. Сейчас это клиентский демо-контур (данные в браузере). Для продакшена нужны бот + API + база — не App Store в первом релизе. Логотип — монограмма ER (Evgeniy Ruksha).查看完整 README ↗
Telegram Mini App студии Евгения Рукши: запись на слоты, баланс занятий, программа тренировок, дневник питания (КБЖУ), меню дня и CRM тренера.
Клиент открывает приложение из бота, тренер — с того же адреса под своим Telegram-аккаунтом. Данные хранятся в Neon (Postgres), вход — по подписи Telegram (initData).
Логотип — монограмма ER (Evgeniy Ruksha).
src/lib/studio-store.ts), синхронизация с сервером (src/lib/studio-sync.ts)fetch, без SDKnode:test + tsx; TypeScript в строгом режимеsrc/routes — страницы и API (в т.ч. /api/telegram — вебхук бота)src/components/app — экраны Mini App: сегодня, запись, программа, питание, клиенты, сканерsrc/lib — бизнес-логика: слоты и баланс, меню дня, штрихкоды и каталог продуктов, уведомления, согласияsrc/data — справочники: блюда (studio.ts), рецепты (dish-recipes.ts), штрихкоды (scan.ts)public/food-catalog.json — горячий каталог продуктов: правится без пересборки, версия поднимается при каждом измененииmigrations — SQL-миграции Neon (применяются при сборке)scripts — миграции и проверки| Имя | Зачем |
|---|---|
BOT_TOKEN | Токен бота. Только в env хостинга, никогда в git или в чате |
TRAINER_TG_ID | Telegram ID тренера. Роль тренера выдаётся только ему |
DATABASE_URL | Строка подключения к Neon (пулер) |
DATABASE_URL_UNPOOLED | Прямое подключение для миграций |
VITE_PUBLIC_HOSTNAME | Публичный домен Mini App |
HOST, PORT | Необязательно, для локального сервера |
npm install
npm run dev # локальный сервер
npm run build # миграции + сборка
npm run typecheck # tsc --noEmit
npm test # тесты из списка в package.json
npm run lint
npm run db:migrate # только миграции
Новый тестовый файл нужно добавить в список test в package.json, иначе он не запустится.
initData (HMAC по токену бота, сравнение через timingSafeEqual, свежесть подписи 24 часа) — src/lib/telegram-auth.server.ts.x-telegram-bot-api-secret-token.src/lib/notify/flush-rules.ts).Дневник питания, КБЖУ и меню дня — данные о здоровье. Без согласия клиента они не собираются и не показываются.
PRIVACY_VERSION в src/lib/privacy.ts; текст — src/lib/privacy-text.ts.src/data/scan.ts, studio.ts), в горячем каталоге (public/food-catalog.json), в общем каталоге студии (Neon) и в Open Food Facts.src/lib/gtin.ts). Код с опечаткой не попадает в общий каталог.Тренер собирает варианты по норме КБЖУ клиента (3–5 приёмов), подтверждает их, клиент выбирает по одному блюду на приём. Если норма изменилась, подтверждённое меню помечается устаревшим (src/lib/menu-scope.ts). Рецепты блюд готовы, но скрыты флагом SHOW_DISH_RECIPES в menu-day.tsx.
Vercel — основной хостинг Mini App.
cruelshot7-ship-it/fraktsiya.npm run build (уже в vercel.json).Railway — запасной вариант (Dockerfile), если понадобится процесс, который работает постоянно.
@BotFather → /newbot → имя и username бота./setmenubutton → URL Mini App на Vercel./setdomain → домен без https://./setdescription, /setuserpic — логотип ER.BOT_TOKEN хостинга.online и видеокомната) — следующий релиз.BarcodeDetector (его в Safari нет). См. историю изменений в PR.public/food-catalog.json не проходит проверку контрольной цифры: их нужно заменить по фото упаковок.