Gym Class Booking App
This Project Was an Onion
This project was like an onion. It looked basic on the outside, but it had so many layers of hidden complication. As this was a course work project, I won’t put too much onto the internet on the technical side of things, but I do want to talk about the struggle of working out the functionality and structure of this application.
The simplified version of the briefing for this project was to build a gym app where users can login and book a gym class, along with an XML upload section that would be used for at least two different record creations. Sounds basic right? WRONG! Once I thought I’d figured out the functionality, another issue would pop up and I’d have to rejig the whole thing and restart the mess almost from scratch.

More Dilemmas
Another dilemma I faced during the build, was deciding how the gym classes should be rendered. It seemed pretty straight forward, for a class to be a complete gym class in the database, it would need to have a day, a time, a trainer and an activity. My thought process to start with, was trying to keep things simple and render set classes with predetermined day, time, trainer, and activity for a user to select from. However, that ended up complicating the booking process for the user. Imagine having to sift through 50 classes to find the one Pilates class you want to do!

Logical Planning
I had to think about the basic things like user access, who can create classes, who can book them, and who can create users, but then it came to the more complex things like working out how to make sure a trainer is not booked for two different classes at the same time, or what happens if a class is cancelled? Can a user book two classes at the same time on the same day and if they can’t, how do you stop that from happening? What I realised in hindsight, is that it would have been invaluable to have explored use cases more in depth rather than basic scenarios and to have built a prototype

Solutions & Lessons
What I ended up doing, using Tailwind and Daisy UI, was incorporating an accordion where I rendered the weekday as titles in the accordion, which dropped down into rendered classes that were available for that particular day with a booking button next to each. Once the class was selected it would take the user to a bookings page where they then selected an available trainer and time from a drop down and were then able to confirm the booking. Again, if I had built a prototype, I may have saved myself weeks of redoing work, but lesson learnt.