gym progres — трекер тренировок с auto-save и шаблонами по публичной ссылке

Ссылка на работу
image image image image image
Персональное веб-приложение для записи тренировок: подходы, веса, упражнения и историю прогресса. Все формы сохраняются автоматически, без кнопки «Сохранить». Проблема. Записывать тренировки в заметки или Google-таблицу — это либо хаос, либо ад с формулами. Готовые фитнес-приложения перегружены: рекламой, подписками, ненужными метриками. А когда тренер скидывает программу в PDF, перенести её в трекер быстрее переписать вручную, чем найти в каталоге. Решение. FastAPI отдаёт страницы через Jinja2 (SSR), Alpine.js на стороне клиента дебаунсит запросы и шлёт изменения в JSON-API — пользователь просто вводит цифры, ничего не «сохраняет». Каталог упражнений (40+ позиций) живёт в data/exercises.json, прогревается через LRU-cache и расширяется без перезапуска контейнера. Любой шаблон тренировки можно открыть по публичной ссылке: ученик жмёт «Импортировать» и получает точную копию у себя, без дубликатов, если что-то уже есть. Bodyweight-упражнения берут вес из профиля пользователя, чтобы не вводить руками. Сессии — на SessionMiddleware, конфиг — pydantic-settings, всё в Docker Compose. Результат. Полный цикл «выбрал шаблон → записал подход → увидел график» работает в один экран без подписок и рекламы. Шаблонами можно делиться без регистрации зрителя. Архитектура SSR + островки Alpine.js — отличная база для быстрых внутренних/нишевых веб-приложений на FastAPI без тяжёлого React.
https://gymprogress.ru/