(Please note it may take a bit longer to load due to free hosting.)
React, React Router DOM (routing), Node.js with Express, Netlify
This full-stack JavaScript project brings trainers and clients together, 
from booking sessions to customizing workouts, 
showcasing my expertise in building end-to-end applications.

Landing Page

Core Functionality

Users can book a coach and receive a personalized workout plan drawn from a shared exercise pool.
Coaches can create or add exercises, assign them to individual users, and give targeted feedback via video uploads and note-sharing.
This direct coach–client communication ensures real-time progress tracking and form correction. 

SingUp Page

Sign-Up Page
Users register with basic details, including a phone number, profile image, and a chosen role (Coach or Client), unlocking role-specific features like creating or receiving workout plans.
Tech
Built with React Hooks for state management, Axios for the Express backend on Render, React Router DOM for navigation, and ClimbingBoxLoader for smooth loading feedback.

LogIn Page

Login Page

Users submit their email and password, then get redirected to the appropriate role-based dashboard (Coach or Client). A custom Auth context (AuthProvider) handles user data, storing the user’s role in localStorage for session continuity. “Remember me” and a password reset link are also available.

Client Dashboard (empty - no plan yet)

User Dashboard
Users can browse coaches, manage their custom workouts (MyPlan), and track progress with visual metrics—all in one place.

Styling
Built using Tailwind CSS, DaisyUI, and Tailwind UI for a responsive, polished user experience.

Profile Page

Profile Page

Users can update their name, email, phone number, and profile image. Double-click triggers an inline-edit mode for each field, toggling a local isEditable state. They can also permanently delete their account.

Booking a coach

Coach Booking

Users can browse coaches, view their profile details, and send a custom booking request via a modal. “Coach cards” are displayed with react-multi-carousel, and booking requests are handled through Axios calls to the Express backend, ensuring a smooth, message-based booking flow.

Coach Dashboard

Coach Dashboard

Coaches can review incoming booking requests from potential clients and accept them in real time, automatically adding those clients to their list. All requests are retrieved and updated via Axios calls to the Express backend, ensuring a seamless workflow for managing new coaching relationships.

Create Exercises

Create Exercise

Coaches can add new custom exercises by providing a title, description, and optionally media (images/videos). Once created, these exercises can be assigned to clients’ training plans, expanding your personalized workout library.

Promote yourself in the app

Start Coaching

Coaches create a personal “ad” by entering details (name, specialty, experience, bio, photo, and price). After submitting, the ad is displayed in a carousel with other coaches for clients to discover and book. We also use react-hot-toast for smooth in-app notifications, ensuring quick and clear feedback.

Create a workout for your client

Create Workout Split
​​​​​​​
Coaches can build personalized workout plans by adding days and exercises (pulled from their own library), specifying sets, reps, weight, and other details. They can dynamically add new rows (days) and columns (exercises) with a click of a button, making it truly customizable. Each plan is then assigned to a chosen client, with a searchable modal that makes adding exercises quick and user-friendly.

Receiving the plan made by your coach

Received Plan

Once a training plan is assigned, clients can view the plan name and switch between days (CurrentSplit → CurrentDay → CurrentExercise). They can log sets, reps, RPE, and notes, then mark each exercise as “complete” to track progress in real time. This interactive flow ensures an organized, step-by-step workout experience.
Final Thoughts

I built this platform in just two weeks alongside a colleague who focused on the backend, although I also contributed to the Node.js/Express server. I’d love to hear any feedback or ideas for improvement as I maybe continue refining and expanding this project in the future. Thank you for checking it out!
Submit
Thank you!
Back to Top