UASC Project

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.

Image of UASC booking page

Overview

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:

What is UASC?

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.

What was the project?

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:

Previous attempt at a web application

Architecting the Solution

Problem Breakdown

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:

As a guest, I want to be able to:

  1. Be able to navigate to a rules and policies page so that I can view the clubs rules and policies
  2. Sign up as a member, so that I can be able to book lodges and access events

As a member, I want to be able to:

  1. View the club’s events and sign up them, so that I can participate in the club’s activities
  2. I want to be able to view available dates at the lodge, alongside the pricing as well as number of total spots and the remaining spots, so that I can make an informed decision planning my lodge stay

As an admin, I want to be able to:

  1. View the club’s members
  2. Configure all pricing (memberships, lodge stays)
  3. View the club’s events and manage them
  4. Check who’s staying at the lodge and when (while ensuring their safety with emergency contacts and dietary requirements)
  5. View the club’s finances and manage payments

Designer involvement

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.

Solution Architecture

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):

MVP architecture

Bonus: hosting and deployment

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.

Implementation

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.

Challenges

Some of the challenges that we faced during the project were:

Outcomes

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!

MVP Stats

Future Improvements

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

Footnotes

  1. https://uasc.co.nz/about

  2. https://auckland.campuslabs.com/engage/organization/uoa-snowsports-club

  3. https://wdcc.co.nz/

  4. It’s insane how you get unlimited bandwidth for static assets!

  5. https://www.oracle.com/cloud/free/

  6. https://github.com/orgs/UoaWDCC/projects/34/views/1

  7. Firebase hosting does not offer any protection against ddos or brute force attacks, which is a major security concern for a production application.