Inspiration

As first-year university students ourselves at Monash, we experienced the struggles of hanging out with friends first-hand when we all had different classes allocated at different times.

It's awkward (and even annoying to) ask each other for our time tables, and when you forget to pin it in your Discord DMs, you'd have to ask again or scroll up a gazillion messages 😭. Let alone having to alt-tab between your time table and your friend's (and even friendSSS in a group) to see whos free on what time and what days.

What it does

This is what AllocateUs hopes to resolve, to find who's available on the campus in your friend group to study together or hang out and kill some time-- just like the good old days of high school when everyone had the same breaks. No more needing to ask for each other's timetables and constantly remember who has what classes and what time on what days 🔥.

You can even invite new friends that you just met on the campus to your friend group, and let AllocateUs recommend you an activity and a location on the Monash University Clayton campus, based on everyone's interests & hobbies as part of their about me in certain allocated free time blocks from playing games at the MEGA PC lounge, playing pool at the arcade in the sports facility or just studying together in the Matheson library if you need to catch up on some work!

It's as simple as signing up and creating room. Then you share a 6 digit room code to your friends and have them sync their calenders with AllocateUs by sending the link to subscribe to the ICS calender on Allocate+, for AllocateUs to automatically sync up with any room changes later down the line.

Then you'll be able to see who's free or not, along with the AI suggestions by clicking on an event in the calender interface for each room of friends!

EXTRA NOTE: This web app will work with multiple universities, given that they use allocate+ for timetabling.

How we built it

Some of us were allocated to focus on either the front-end or the back-end, and full-stack to ensure the two run together smoothly whilst minimising the time spent on merging commits together against the race of time in this Hackathon. But of course, all of us had to interact with either the back-end or the front-end when we were sitting in a group call altogether for 10+ hours in a day.

We used a variety of technology (all of which were used for the first-time ever as first-year students doing comp sci, so we also had to spend time learning it simultaneously in 48 hours 😭). which the main technologies used are Datastax's database, Next.js, FastAPI, Groq AI. Some of us had also never used Git before... and so it was very impressive for them to quickly pick up on how to Git commit, pull request and merge within the chaotic development of this project all during the Hackathon!

We used Groq AI for determining recommended activities based on peoples about me, DataStax database for storing rooms and users. We used ChatGPT (Generative AI) to assist in the making of some front end designs, this was only done to implement styles within our interface.

Challenges we ran into

The majority of us hated doing front-end. Let alone, having to learn a new technology for it. And so what had ended up happening was that the backend was done very quickly, whilst the front-end was lagging behind by quite a lot...

Luckily, our power of friendship came together amid the struggles 💪 and everyone on the backend team came over to help on the front-end. (We had so many merges to do, I myself (jason) even lost like 5 commits in the process; absolute chaos towards the end 😭😭😭).

We also did plan on being able to be allocated into random groups if it is set to public, and allow AI to best decide who to allocate us into (hence AllocateUs!) based on everyone else's preferences in that specific room. But unfortunately, combined with the time spent on learning all these new frameworks, we have had to scrap this secondary functionality. Fortunately, we still managed to get the core functionality of our project done!! yippee!! Perhaps we could include this in a future update post-hackathon.

Though more specifically:

  • Settling on an idea that we could commit to was a struggle in the initial stages of the Hackathon. We had different ideas that we weren't so sure on, as we weren't sure on whether we would be able to finish some of these ideas or there was huge loopholes with some of the issues. Eventually, through iterating our idea, we eventually came to the conclusion of going with the idea of AllocateUs!
  • Some of us were struggling to set up and learn how to implement authentication that utilises JWT tokens that were set up by the back-end team for the front-end. This especially reduced the time for the front-end team (that already hates front-end) to implement the actual core functionalities of the project such as visualising the calender for free times. We eventually settled on a solution that isn't the most secure by exposing our API key, but functions as we had to quickly move on.
  • The backend team had different opinions on how to approach solving for the free times that are available between everyone's timetables in a room. And so we eventually decided upon a simple approach of keeping track of who is free or not as the algorithm iterates through everyone's timetable events in order, which will just run in O(n^2) time (including allocating who is free or not).
  • When attempting to use DataStax's AI flow, it was constantly freezing in the browser and sometimes even unavailable to load or deploy. We eventually scrapped this as it was taking too long for the hackathon, and settled on a simple solution of just having all the instructions hardcoded into the backend for the Groq AI to suggest recommended activities for people to do.
  • When it came to hosting the actual solution for anyone to try (we know this is optional, but we ourselves really wanted to have this live too for the judges to try out as a demo), we were running into issues the browser refusing to make HTTP (insecure) connections to the backend, becuase there was no SSL set up on the backend which was DigitalOcean. And so we moved to Heroku to handle the SSL for us as we were running into issues with setting up HTTPS connections to the backend with DigitalOcean.

Accomplishments that we're proud of

Starting out in the project, we all grew increasingly worrisome of everything. This was the first hackathon for all of us, and when you mix in brand new complex technologies like Next.js, we had ended up just crying and wondering if we would ever make it to writing up htis DevPost submission in the first half of the hackathon.

But through everyone's perseverance and willingness (with everyone's very high 999+ IQ) to learn and adapt to everything in an instant, we were able to at last, reach the end of the hackathon with a project we are proud to show off to you! The judge!

Essentially, we're all just very proud of each other for being able to learn how to use everything from scratch whilst also submitting a complete build within the allocated time.

What we learned

  • How to use all the technologies featured in this project.
  • How to work together as a team using Git, and experiencing what it is like for back-end and front-end to work together in cohesion.

What's next for AllocateUs

There are so many different ways we could branch this project out further that we couldn't do in 48 hours. Though first off, it would definitely be useful for us to implement a way to be allocated into a public room based on our preferences, judged by AI using a flow on DataStax.

Built With

+ 20 more
Share this project:

Updates