GymLog - тренажерный зал в кармане

lsnull

Постоялец
Регистрация
18 Сен 2013
Сообщения
425
Реакции
135

Screenshot_587.png


GymLog - это современная цифровая экосистема и персональный дневник тренировок с уникальной привязкой к реальному оборудованию зала. Атлет выбирает номер тренажера или сканирует QR-код, видит свои индивидуальные настройки сиденья и веса, фиксирует подходы с учетом RPE, контролирует вес, замеры тела и водный баланс. Приложение мгновенно работает на любом смартфоне как нативное PWA без комиссий App Store и сохраняет данные даже без интернета.​

🛠️ Стек технологий и инструменты​

1. Клиентская часть (Frontend)​

  • React 19 (react, react-dom 19.0.1) — современная библиотека интерфейсов с функциональными компонентами, хуками (useState, useEffect, useMemo, useCallback), контекстами и строгой изоляцией модальных окон.
  • TypeScript 5.8 — строгая статическая типизация всех структур данных (тренировки, подходы, тренажеры, замеры, права RBAC).
  • Vite 6 — сверхбыстрый сборщик, бандлер и dev-сервер с поддержкой горячей сборки и ES-модулей.
  • Tailwind CSS 4 (@tailwindcss/vite) — современный утилитарный CSS-фреймворк последнего поколения для адаптивной верстки (смартфоны, планшеты, десктопы).
  • Motion (motion/react v12) — плавные физические анимации модальных окон, всплывающих меню и переходов между вкладками.
  • Lucide React — библиотека векторных иконок для спортивного оборудования, навигации и статусов.
  • Recharts — интерактивные графики прогресса (динамика тоннажа, 1RM, замеры тела, графики гидратации).
  • Canvas Confetti — праздничные салюты при завершении тренировки или достижении рекорда.
  • qrcode.react — генерация нативных QR-кодов для шаринга PWA-установки на телефон и быстрого открытия тренажеров.

2. Мобильная среда и Progressive Web App (PWA)​

  • vite-plugin-pwa — генерация Service Worker, кэширование ресурсов для офлайн-работы и веб-манифест (manifest.webmanifest).
  • Тройная система детекции PWA:
    1. W3C getInstalledRelatedApps API — системный опрос ОС в браузерах на базе Chromium (Android Chrome, Windows, ChromeOS).
    2. Событие appinstalled — мгновенная фиксация факта установки приложения.
    3. Событие beforeinstallprompt — управление нативным диалогом установки в один клик.
  • iOS Standalone Support — адаптация под Safari на iPhone/iPad (работа без адресной строки, нативные иконки и сплэш-экраны).

3. Серверная часть (Backend & API)​

  • Node.js + Express 4 — REST API бэкенд, обрабатывающий маршруты /api/* (тренировки, шаблоны, тренажеры, пользователи, вода, замеры).
  • tsx — мгновенный запуск TypeScript на бэкенде без долгой компиляции во время разработки.
  • esbuild — высокоскоростная сборка серверного кода в единый CommonJS бандл dist/server.cjs с поддержкой sourcemap для продакшна на VPS.

4. База данных и слой данных (Database Layer)​

  • MySQL 2 (mysql2/promise) — асинхронный драйвер реляционной СУБД с пулом соединений (createPool) и автореконнектом.
  • Встроенная система Self-Repair и авто-миграций — при запуске сервер проверяет таблицы и автоматически создает недостающие структуры.
  • Двухуровневая синхронизация — локальное хранилище (localStorage) для мгновенного отклика интерфейса + синхронизация с MySQL на VPS.

📋 Подробное описание возможностей и функционала GymLog​

1. 📅 Интерактивный Календарь тренировок​

  • Визуальная сетка: Отображение тренировок по месяцам, неделям и дням, индикатор сегодняшнего дня.
  • Статусы: «Запланирована», «В процессе», «Завершена», «Пропущена».
  • Цветные бейджи мышечных групп: В ячейке каждого дня сразу видно, какие группы мышц прорабатывались (Грудь, Спина, Ноги и т.д.).
  • Экспорт в календарь смартфона (.ics): Скачивание файла iCalendar для автоматического добавления тренировки в Apple Calendar, Google Календарь или Outlook.

2. 🏋️ Конструктор и редактор тренировок​

  • Запуск с нуля или по шаблону: Свободный ввод или быстрый старт готового тренировочного плана в один клик.
  • Удобный подбор тренажеров: Поиск по номеру зала (#01, #02...), названию, бренду или мышечной группе.
  • Детализация подходов (Sets):
    • Ввод веса (кг) и повторений.
    • Типы подходов: Разминка, Рабочий подход, Дропсет, Отказ.
    • Шкала субъективной нагрузки RPE (1–10).
    • Кнопка дублирования предыдущего подхода для мгновенного ввода.
  • Расчет статистики в реальном времени:
    • Общий тоннаж тренировки (кг перенесенного веса).
    • Общее число подходов и повторений.
    • Средний рабочий вес повторения.
    • Сравнение с аналогичной прошлой тренировкой (прогресс в % и кг).
  • Встроенный таймер отдыха:
    • Быстрые интервалы: 30, 60, 90, 120, 180 секунд.
    • Звуковые сигналы окончания отдыха (Web Audio API).
    • Сворачивание в компактный плавающий виджет без блокировки ввода.
  • Защита от создания пустых тренировок: Если упражнения не добавлены, вместо завершения доступна кнопка «Отменить тренировку».
  • Оценка самочувствия и заметки: Шкала формы (1–5), длительность в минутах и текстовые заметки о травмах/ощущениях.
  • Сохранение в шаблон: Превращение выполненной сессии в новый шаблон в один клик.

3. 🏷️ Каталог оборудования и тренажеров зала​

  • База тренажеров с номерами зала, фотографиями и биомеханическим описанием.
  • Персональные регулировки под атлета: Сохранение высоты сиденья, упора спинки, угла наклона и рабочего стека.
  • История по конкретному тренажеру: Просмотр всех выполненных на нем подходов за всё время и график роста рабочих весов.

4. 📑 Шаблоны и комплексы тренировок​

  • Библиотека классических сплитов: Full-Body, Верх/Низ, Тяни-Толкай-Ноги (PPL) и изолированные программы.
  • Создание пользовательских комплексов с фиксированными упражнениями, подходами и весами.
  • Разграничение видимости: Личные, Тренерские (для подопечных) и Публичные.

5. 📏 Замеры тела и антропометрия​

  • Фиксация ключевых параметров: масса тела (кг), процент жира, шея, плечи, грудь, бицепсы, талия, живот, бедра, икры.
  • Интерактивные графики динамики изменений во времени (похудение или набор массы).

6. 💧 Трекер гидратации (водный баланс)​

  • Дневной учет выпитой воды с быстрыми кнопками +250 мл, +500 мл или точным вводом.
  • Авторасчет суточной нормы воды исходя из веса тела и тренировок.
  • История соблюдения питьевого режима по дням.

7. 🧮 Спортивные калькуляторы​

  • Калькулятор 1RM (Одноповторный максимум): Расчет по 7 международным формулам (Epley, Brzycki, Lander и др.) с готовой сеткой процентов от 50% до 95%.
  • Калькулятор Вилкса (Wilks) и DOTS: Оценка коэффициента силы для соревновательного пауэрлифтинга.
  • Калькулятор BMR и TDEE: Расчет базового метаболизма и суточной калорийности для сушки, баланса или набора.
  • Калькулятор процента жира (US Navy) и ИМТ (BMI).

8. 📲 Установка PWA и шаринг через QR-код​

  • Возможность установить сайт на смартфон без App Store и Google Play как полноценное приложение без рамок браузера.
  • Встроенный генератор QR-кода: тренер или друг может просто навести камеру смартфона на экран десктопа и мгновенно установить приложение себе.

9. 🔐 Ролевая модель доступа (RBAC) и учетные записи​

  • Гость (Guest): Безопасный ознакомительный просмотр без риска перезаписать чужие данные.
  • Атлет (Athlete): Личный дневник, свои шаблоны, замеры и история.
  • Тренер (Trainer): Создание тренерских программ и комплексов для спортсменов.
  • Администратор (Admin): Доступ к системной панели, управлению пользователями и диагностике базы данных.

10. ⚙️ Панель администратора, бэкапы и диагностика БД​

  • Мониторинг статуса MySQL в реальном времени с проверкой соединения и пинга.
  • Инструмент автопочинки структуры таблиц при обновлении версий.
  • Полный экспорт всех данных приложения в файл JSON и восстановление из резервной копии.
 

Вложения

  • Screenshot_604.png
    Screenshot_604.png
    82,9 KB · Просмотры: 3
  • Screenshot_588.png
    Screenshot_588.png
    401,1 KB · Просмотры: 1
  • Screenshot_589.png
    Screenshot_589.png
    380,1 KB · Просмотры: 1
  • Screenshot_590.png
    Screenshot_590.png
    423 KB · Просмотры: 1
  • Screenshot_591.png
    Screenshot_591.png
    379,1 KB · Просмотры: 1
  • Screenshot_592.png
    Screenshot_592.png
    119,8 KB · Просмотры: 1
  • Screenshot_593.png
    Screenshot_593.png
    153,9 KB · Просмотры: 1
  • Screenshot_594.png
    Screenshot_594.png
    317,2 KB · Просмотры: 1
  • Screenshot_595.png
    Screenshot_595.png
    440,8 KB · Просмотры: 2
  • Screenshot_596.png
    Screenshot_596.png
    191,9 KB · Просмотры: 1
  • Screenshot_597.png
    Screenshot_597.png
    282,3 KB · Просмотры: 1
  • Screenshot_598.png
    Screenshot_598.png
    112,2 KB · Просмотры: 2
  • Screenshot_599.png
    Screenshot_599.png
    163,2 KB · Просмотры: 2
  • Screenshot_600.png
    Screenshot_600.png
    389,9 KB · Просмотры: 2
  • Screenshot_601.png
    Screenshot_601.png
    99,2 KB · Просмотры: 2
  • Screenshot_602.png
    Screenshot_602.png
    109,1 KB · Просмотры: 2
  • Screenshot_603.png
    Screenshot_603.png
    139,9 KB · Просмотры: 2
  • Screenshot_605.png
    Screenshot_605.png
    363,9 KB · Просмотры: 3
  • Screenshot_586.png
    Screenshot_586.png
    245,8 KB · Просмотры: 3
Календарь
 

Вложения

  • Screenshot_585.png
    Screenshot_585.png
    220,2 KB · Просмотры: 0
  • Screenshot_584.png
    Screenshot_584.png
    93,6 KB · Просмотры: 0
Назад
Сверху