FitHub
Единая платформа фитнес-центра: профили клиентов, тренировки, расписание, абонементы и учёт посещений.

О проекте
FitHub — коммерческая система управления фитнес-центром с React-клиентом и REST API на Spring Boot. Роли клиента, тренера и администратора работают с профилями, планами и журналами тренировок, групповыми и индивидуальными сессиями, питанием, целями и измерениями, абонементами, оплатами, отзывами и уведомлениями. Основные данные хранятся в PostgreSQL; Redis используется для кеширования и серверных механизмов.
Задача
Связать разные операции фитнес-центра и разграничить действия клиентов, тренеров и администраторов на уровне API.
Что реализовано
REST API на Spring Boot с JWT-аутентификацией и проверкой ролей CLIENT, TRAINER и ADMIN.
Модули тренировок охватывают планы, журналы, упражнения, сессии, посещаемость и лист ожидания.
Отдельные модули ведут питание, воду, цели, измерения тела и личные рекорды.
Абонементы и платежи, профили тренеров и отзывы, внутренние уведомления и обновления через SSE.
PostgreSQL с управлением схемой через Flyway; Redis для кеша, blacklist токенов и блокировок сессий.
Технологии
Архитектура и роль технологий
- Java
- Типизированная логика desktop- или серверного приложения.
- Spring Boot
- Структурированный Java-backend для API и бизнес-операций.
- React
- Построение интерактивных компонентов и пользовательских сценариев.
- TypeScript
- Типизированные модели данных и логика приложения.
- PostgreSQL
- Реляционное хранение связанных данных и транзакционная согласованность.
- Redis
- Быстрое хранилище для кеширования и вспомогательных серверных процессов.
Как это работает
- Пользователь входит и получает доступ к разделам в соответствии со своей ролью.
- Клиент, тренер или администратор выполняет доступные операции в своём интерфейсе.
- API проверяет права и сохраняет изменения в PostgreSQL; Redis обслуживает кеш и блокировки.
- Уведомления поступают в приложение, а SSE передаёт обновления открытому клиенту.
Галерея проекта
Есть задача? Найдём решение.
Расскажите, что нужно сделать. Уточним детали и предложим следующий шаг.
Обсудить проект

