Назад к резюме

Личный проект

Gym Tracker — мой пет-проект, PWA-приложение для автоматизированного учёта силовых тренировок. Работает офлайн, хранит данные на устройстве и синхронизируется через CRDT при подключении к серверу. Поддерживает рекомендации по прогрессии весов, историю тренировок и визуализацию оборудования.

Recommendations

Алгоритм рекомендаций

Система рассчитывает веса и повторения на основе 1ПМ и периодизации (лёгкие, средние и тяжёлые тренировки). Алгоритм учитывает конфигурацию блинов и шаг веса, подбирая реальный доступный вес и корректируя диапазон повторений. Это избавляет пользователя от рутинных расчётов и поддерживает стабильный прогресс.

Weights

Конфигуратор и визуализация весов

Под каждое упражнение можно настроить доступные блины и шаг изменения нагрузки. Рекомендованный вес отображается в наглядном виде — штанга или гантели с конкретным набором блинов. Такой подход снижает риск ошибок и делает приложение ближе к реальному тренировочному процессу.

Analytics

История и аналитика

Приложение сохраняет полную историю занятий, упражнений и подходов, что позволяет отслеживать прогресс на дистанции. Пользователь видит личные рекорды, графики изменения 1ПМ, рабочего веса и общего тренировочного объёма. Такой журнал заменяет блокнот или таблицы, упрощает анализ и делает результаты наглядными.

Sync

Локальное хранение и синхронизация

Gym Tracker полностью работает офлайн: все данные сохраняются в IndexedDB на устройстве пользователя, и приложение остаётся функциональным даже при длительном отсутствии сети. Пользователь может месяцами вести учёт тренировок без интернета, а интерфейс всегда остаётся отзывчивым и мгновенно обновляется при изменении данных.

Синхронизация реализована на базе библиотеки Y.js (CRDT). Поверх неё я написал слой базы данных с запросами, мутациями и хуками для React, что обеспечивает автоматическую репликацию изменений при появлении сети. Даже после длительного офлайна все операции корректно объединяются без конфликтов, сохраняя целостность истории и стабильность работы приложения.

Стек технологий

  • TypeScript
  • React
  • HTML
  • SCSS
  • Y.js
  • PWA
  • Vite
  • Firebase
  • Recharts
  • Jotai
  • IndexedDB