Inspiration

USYD's class selection process can be described as infuriating at best, and completely impossible at worst. Students are forced to put their preferences into Allocate+, which then allocates students to classes based on these preferences. The catch - the interface is janky, unintuitive and in some cases downright unusable. While others have tried and failed to make a successful app to allow students to plan their preferences, Allocate++ promises a hassle-free experience in planning your timetable for next semester.

What it does

Allocate++ is a timetable planning application which allows you to plan your timetables for the next semester before they submit their preferences. It features an intuitive drag and drop interface so you can quickly iterate through possible timetable combinations to best suit yourself. To accommodate the harsh reality that no one may end up with their top preferences, multiple possible timetables can be created and compared to ensure that you can beat the algorithm. Last but not least, Allocate++ allows you to add your own todo list to your timetable, placing your entire uni life at your fingertips.

How we built it

Our tech stack consists of:

  • Frontend: React (Typescript) with Vite. Our UI is powered by Stitches and headlessUI, with drag-and-drop provided by Framer Motion
  • Backend: Express (Typescript)
  • Database: MongoDB Atlas cluster

Each event in the timetable is represented in the same way as events on Google Calendar are, thus allowing you to easily add your classes to your personal Google Calendar.

In addition to this, we wrote a Python script to retrieve the list of courses for a degree, then the class data for each course. Finally, this information is inserted into the database with each collection representing a course and each document representing a class. Currently this only supports courses as part of the Advanced Computing degree, but this can be easily extended in the future.

Challenges we ran into

Several technologies used in this app were new to most of the team, especially in the frontend. However, using our past experiences we managed to overcome the initial learning curve and create an aesthetic, functioning application. In addition, crafting the Python script was a journey in itself due to USYD's inconsistent APIs, forcing us to work hard to wrangle the data into a consistent, usable format.

Accomplishments that we're proud of

In terms of technical accomplishments, we're proud that we were able to overcome the limitations of the libraries that we used, such as Framer Motion and it not registering events when a dragged object is dropped, and successfully scraping classes data when the USYD API can be quite inconsistent.

Furthermore, as we are quite passionate about the project, since we wholeheartedly believe that it can be of help to many students, we stayed up quite late and worked on it until the very last minute so that we could bring our vision to life.

What we learned

How hard it is to schedule your classes at USYD.

We learnt many new things such as new frontend technologies, new React patterns and we also got to refine our web scraping skills.

What's next for Allocate++

The next big step would be to expand the range of supported courses beyond the computing faculties to ensure no student is left out. Next, possible new features include autotimetabling, where we use an algorithm to generate a possible timetable based on the user's criteria such as what days they want to be at uni or which days they want to be at uni.

Built With

+ 23 more
Share this project:

Updates