Inspiration
The project was initially thought of to just be a website for users to find vacant rooms in NTU, so they can be utilised for impromptu karaoke while not in use. Along the line during brainstorming, we realised that NUSMods has a similar feature so why not incorporate something similar, it totally hasn't been done before.
What it does
The site as of now displays a list of modules offered in NTU, with the courses including which majors are allowed to take them and a filter for module codes & description. In addition, in accordance with our original goal, the site also lists all venues in NTU, with a timetable of when each venue is currently booked for the semester.
How we built it
Primarily the frontend is built with ReactJS and django for the backend, with postgres as our database of choice.
Challenges we ran into
Scraping all of the sites was a pain as they did not have unique identifiers for most of the information and most of the parsing is hard coded. The worst being the module information, where it's just displayed in a HTML table with no id or class names. So if NTU decides to change their layout a little, our scraper may break.
We were also very fresh with ReactJS and django, having little experience with the frameworks, but getting used to them wasn't as bad with the joint powers of Google and ChatGPT.
Accomplishments that we're proud of
Being able to use frameworks we've barely touched into an actual project.
Getting the venue search to work also took quite a bit of time and we were lucky to finish it an hour before submission.
What we learned
Have a good night's sleep before a 24 hour hackathon, unless you're fine with dozing off midway and waking up with some regret.
What's next for NTUMods
- Scrape a list of professors
- Indicate which venues are karaoke friendly
- Users being able to plan their own timetable on the site.
- Get all the longitude and latitude data for each venue so we can sort the free rooms based on the one nearest to the user.
Log in or sign up for Devpost to join the conversation.