FitHub
One platform for a fitness centre’s client profiles, training, schedules, memberships and attendance.

About the project
FitHub is a commercial fitness-centre management system with a React client and a Spring Boot REST API. Separate client, trainer and administrator roles work with profiles, workout plans and logs, group and individual sessions, nutrition, goals and measurements, memberships, payments, reviews and notifications. PostgreSQL stores the core data; Redis supports caching and server-side coordination.
The challenge
Connect fitness-centre workflows while enforcing distinct client, trainer and administrator permissions in the API.
What we built
Spring Boot REST API with JWT authentication and CLIENT, TRAINER and ADMIN role checks.
Workout modules cover plans, logs, exercises, sessions, attendance and a waitlist.
Separate modules track nutrition, water intake, goals, body measurements and personal records.
Memberships and payments, trainer profiles and reviews, in-app notifications and SSE updates.
PostgreSQL with Flyway-managed schema; Redis for caching, token blacklisting and session locks.
Technology stack
Architecture & technology roles
- Java
- Typed application logic for desktop or backend components.
- Spring Boot
- A structured Java backend for APIs and business operations.
- React
- Interactive components and user-facing workflows.
- TypeScript
- Typed data models and application logic.
- PostgreSQL
- Relational storage of connected data and transactional consistency.
- Redis
- Fast storage supporting caching and auxiliary server processes.
How it works
- The user signs in and receives access to role-appropriate sections.
- A client, trainer or administrator performs available operations in their workspace.
- The API checks permissions and stores changes in PostgreSQL; Redis handles caching and locks.
- Notifications appear in the app, with SSE delivering updates to connected clients.
Project gallery
Have a challenge? Let’s solve it.
Tell us what you need. We’ll clarify the details and suggest the next step.
Discuss your project

