A detailed look at how we transformed the admin process of the largest sports club on the University of Auckland campus (as of 2024) with a team of 13 developers.
TL;DR: I mentored and led 13+ student developers to create uasc.co.nz which automated the University of Auckland Snowsports Club’s booking, membership, and event management processes, replacing their manual Google Forms and payment systems with a mostly automated web application.
This application handles payments and signups for at least 700+ members per year
check out:
- GitHub repository for the project
- Live site for the project
UASC (University of Auckland Snowsports Club) is/was (as of time of writing) is the largest sports club at the University of Auckland with 1000+ members in 2024. It was founded in 19661 and is a very busy club in terms of operations, with its fast-selling events and popular lodge location at the Whakapapa ski field2.
As the Technical Lead of the UASC project as part of WDCC3 in 2024, I, alongside a project manager was presented by the club executives with a problem:
How can we remove the manual processes of managing the club’s events, lodge bookings and member registrations, while also improving the user experience for our members?
The club had been using a combination of Google Forms and manual email communication to manage these aspects, which combined with the large membership base clearly showed a lot of room for improvement.
There had been a previous attempt at building a web application for the club, but it was far from functional:
As with any project, having a problem to solve is a good start, but to allow us to solve it, we need a deep dive into what the smaller components of the problem are. I needed to understand the three main stakeholders that would have major bearing in the solution:
From this we can see that the solution needed to be able to handle the following:
We were lucky enough to have a very competent designer on the team, who we were able to work together with to create designs that addressed the above user stories. The designs were created in Figma and were used as a reference for the frontend development. The designs were also used to create a style guide for the application, which ensured consistency across the application and made it easier for the frontend developers to implement the designs.
All of this points to a need for using a standard backend and frontend architecture, with all our operations being encapsulated in the backend. In order to deliver on an MVP (which we had 3 months to deliver) an architecture was determined with the following components
Building around these components is relatively framework-agnostic, so we could use any frontend/backend framework we wanted, with the choice being:
Here’s the initial architecture diagram that we implemented for the MVP, showing the main components that we required ( note that sanity was implemented later on, as for an MVP it was acceptable to have the content in the code):
As a university club, we had to be realistic about our hosting and deployment options. We had a limited budget, so some compromises had to be made.
The most notable one was to avoid using anything server-based for the frontend and go with static site generation for 100% free hosting on cloudflare pages 4. This did mean that we had to be a bit more careful on what was fetched server-side.
Luckily, for the backend oracle offers a very generous free tier with their Oracle Cloud Free Tier5 which we can take advantage of two AMD compute instances.
Over the course of the project, I mentored and led a team of 13+ student developers to implement the solution. All developers were expected to work on the full-stack, however obviously some had a stronger preference for frontend or backend development. A total of 328 tickets 6 were created for the project (albiet some were made after the MVP was completed)
Frequent meetings were held with the client to ensure that we were actually delivering what they wanted, and not what we thought they needed. This was a key part of the project, as it allowed us to iterate on the solution and make the necessary compromises to deliver the MVP on time.
Some of the challenges that we faced during the project were:
The project was a success, with the MVP being delivered on time and additional functionality being added following the MVP deadline. The club executives were very happy with the solution, and it has been in use since the start of the 2024 ski season. The application has been able to handle the large membership base and has improved the user experience for both members and admins. The club has been able to reduce the manual processes involved in managing the club’s events, lodge bookings and member registrations, and has been able to focus on running the best possible events and experience for their members!
While currently the application is in a good state, there are still some improvements that can be made to the application, such as:
We’d be very happy to have any contributors/maintainers for the project, so if you’re interested in contributing, please feel free to have a look at the GitHub repository
https://auckland.campuslabs.com/engage/organization/uoa-snowsports-club ↩
It’s insane how you get unlimited bandwidth for static assets! ↩
Firebase hosting does not offer any protection against ddos or brute force attacks, which is a major security concern for a production application. ↩