Inspiration
Moving around the UNSW handbook was way too finicky with all the course availability and ratings scattered. We have all had the questions of "what do I do this term", "If I want to do this, when is it available" and "even if I did want to do this, will I enjoy it" these questions were the motivations behind the creation of CoursEz and while other DevSoc projects aid in providing a solution for each of these questions, often times the information is a bit scattered and the planning can get inefficient.
What it does
Students can select their degree + major and then the app will generate a list of all the core courses, prescribed electives (if there are any) and other electives that are recommended for the student. This information is aggregated and formatted to display all in one place so that students do not have to switch to hop around to different apps.
How we built it
We used the GraphQL/Hasura API to get preliminary information and then the rest of the data that we required was obtained by implementing a python webscraper.
The data is stored as simple JSON as off right now for the MVP. Whenever the database requires an update the webscraper is called.
The frontend is built using React and reads from our JSON file database.
Challenges we ran into
We originally planned to allow for the student to select all the courses that they have already completed and this would influence the courses that were shown in the frontend. However, there were a few challenges that was met when trying to implement this and we thought that this was beyond the scope of the time we were allowed to build the project, so we put that down as a thing we would do in the future.
The Hasura/GraphQL api has a lot of useful endpoints but it doesn't have everything (like course prerequisites). So we had to find workarounds like building out the web scraper to get all the data that we wanted.
Most of the members in our group also did not have any experience with frontend so the members that were assigned those parts had to learn on the fly and implement everything.
Communication and time management was also an issue because not everyone had as much time as they thought they had for the project since they had other commitments like coursework from this term, extracurricular activities or work.
Accomplishments that we're proud of
Working together as a team to create a working MVP despite the courses being limited.
What we learned
How to write a webscraper that works for dynamically loaded webpages and how to manoeuvre around the HTML DOM to access all the required information that we needed.
How to write a simple react website.
What's next for CoursEz
- The ability to specify prerequisites.
- Updating the frontend to display more helpful information
- Refactoring our database to use a proper database framework like MongoDB, Postgres etc
- Generating example program/degree structure timetable so that students know what courses to take without having to think about what to take next, when to take it and if they're going to like it.
- Quick details popup when clicking on the course rather than taking you to the UNSW handbook page for the course.
Built With
- graphql
- hasura
- javascript
- python
- react
Log in or sign up for Devpost to join the conversation.