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 передає оновлення відкритому клієнту.
Галерея проєкту
Є задача? Знайдемо рішення.
Розкажіть, що потрібно зробити. Уточнимо деталі та запропонуємо наступний крок.
Обговорити проєкт

