This is an ecommerce Drupal site for a gym with a staff of personal trainers. It includes both a master calendar and per-trainer calendar for training sessions, as well as a full recurring billing system with variable monthly payment amounts based on the number of training sessions scheduled. It also includes data visualization for tracking client progress with their fitness goals.
- User Roles: A moderator can add trainer accounts. A trainer can add user accounts for their clients. Each of these roles must sign separate legal documents to make sure they agree to the rules of the gym.
- Booking Training Sessions: The site allows a trainer to schedule workouts with their clients on the master calendar. Each workout is a piece of custom content called a 'training session' which includes date/time information.
- Recurring Billing: Full Ubercart and Stripe integration to allow trainers to be billed on a monthly basis. If the trainer does not have any workouts booked that month, then their membership is free. Otherwise, they are charged half of whatever they choose to charge their clients (up until a cap of $1000.)
- Fitness Progress Visualization: A trainer can add a 'Progress Update' to any of their client profile pages. A Progress Update is a piece of content which includes measurements such as waist size and weight, as well as a picture of the client. These progress updates are displayed with graphs for measurements and a slideshow for recent pictures.
- Workouts and Meal Plans: Each trainer can create 'Workouts' and 'Meal Plans' to assign to any of their clients. A Workout is a set of instructions for which exercises to do, for how long, and with what weight at the gym. A Meal Plan might specify the number of meals to eat per day, how large portions should be, and what sort of nutrients should be focused on (lots of protein, or small portions, etc.) A client can log into their profile and review these and remember what to focus on when the trainer is not present.
- Fitness Tests: A Trainer can create 'Fitness Tests' to measure a client's progress over time. This would be something like "How many pushups can you do in 30 seconds?" or "How much weight bench press?". Results of a test are recorded with whatever units are applicable to that test, and a client can see their progress on their profile page.