Every semester, we have to go through the stressful process of timetable planning and ModReg, often spending hours comparing differences in timetables when we try to decide which mod we can fit into our schedule. And sometimes when we fail to bid for a mod and have to look for an alternative, our entire timetable falls into shambles and we have to spend more time fiddling around in NUSMods. Planning for a new semester should be something exciting and not dreaded and stressful. This project hopes to provide an easy way to come up with personalized timetables and allow students to quickly compare how their timetables differ when they swap out mods.
NUSMods Timetabler allows students to add mods into their timetable and select restrictions such as 'No classes before 10 am' and then generate a timetable at random with those restrictions in place if possible. Our web app also has a parameter extraction feature to allow users to quickly port over their mods from NUSMods using the NUSMods sharing link. This would allow students to quickly plan for their semester and also allow quicker comparison of timetables between mod combinations.
How we built it
Our web app was built on React.js with Redux while utilizing NUSMod API to fetch the data of the mods. We recreated the NUSMods Timetable page from the ground up and added permutation logic such that the timetable automatically generated give restrictions by the user.
Challenges we ran into
Not all of our members are familiar with the technologies used in the project and thus they had to adapt and learn on the spot and take on 'easier' tasks such as styling. We also had to recreate the timetable page of NUSMods from scratch before implementing our filtering function which added to the production time.
Accomplishments that we are proud of
Only 2 of our members were familiar with React and web app development and we are honestly surprised at the amount of functionality the end product had given that this year we only had 24 hours to complete the hackathon. We are proud to say that this is an app that we can see ourselves using and make our lives easier.
What we learned
It was a good exposure and learning experience for the two of us that came in with no experience in web development. We learned how to create web apps using React as well as how to work in a team using tools such as Git and Github.
What's next for Timetabler
Improvements on UI/UX as well as improve the functionality of the timetable generation such that more options for restrictions can be added such as 'locking' of certain time slots. We also hope to work on NUSMods in the future and hopefully push this feature to be integrated.