SportSort is a fullstack application built for McGill's ECSE 321 in Winter 2024. Done in teams of 6, we were given tasked with creating a web app given the following prompt
The owner of a local sport center contacts you to design a web app to help them run their business. The app should enable the owner and instructors to manage different types of classes and to organize the schedule of the sport center. It should also enable customers to consult available classes and to register to these classes. The sport center proposes three different classes: cardio, stretching and strength training. Any instructor can propose to supervise a session of one of these classes and update the schedule accordingly. Instructors can create new types of classes (e.g., goat yoga) which need to be approved by the owner before appearing on the web app. The owner has its own account from which they can edit information related to the sport center (proposed classes, instructors, opening hours), change the schedule, manage the instructors and approve new classes. Anyone can consult the schedule on the website, along with information regarding the instructors and the classes. Customers have their own account with which they can register to a session and manage the sessions to which they already registered. The above description is intentionally poorly defined. In teams of six students, you will gather requirements, design a multi-tier software solution to satisfy those requirements, implement the system, validate that the system is satisfying the requirements, and develop a release pipeline to automate the software delivery process.
Powered by Spring Boot, Postgres and Hibernate in the backend, and Svelte in the frontend, SportSort is a fully fledged web app that is deployment ready.
Since its completion, I have taken the time to finish some of the original targetted functionality and extend parts of the app. See the changes in the changelog here:
See the app in its submitted state here: https://github.com/raydatray/SportSort/tree/6a15287fcddea1f784522a960745cada8be602c6