For setting up Circles locally, please follow the instructions provided on the GitHub README’s
Introduction
Circles is a free degree planner for UNSW students aiming to provide a easier way to plan when to take their courses and explore potential courses available and review their degree progression. We have 3 pages which aim to achieve our mentioned goals: Course Selector Page, Term Planner Page and Degree Progression Page.
If you have any questions, please contact either James Ji (Unlicensed) or Jennifer Xu (Unlicensed).
UNSW Handbook Scraper
In order to get the data for the courses, we scrape the UNSW handbook. However, the enrolment conditions for courses are written in plain English. We use several tricks to process the condition text, mainly involving regex. After this data is cleaned up and organised, it is ready to be used.
Data Processing
(Currently, we simply store this data locally in plain text. In the future, it will be stored on the cloud and loaded as needed).
The data required for each program is different (the courses for SENGAH are completely different to the courses for ACTL for example). This is why we must process the data again specifically for each program. This involves several things, some of which are:
Making manual fixes to the data (e.g. spelling mistakes, program specific changes, etc)
Organising any other information which might be useful (such as a list of courses required by this program, etc)
Flowchart + Progression Checker
The flowchart is very interactive and allows people to click on courses to select/unselect them. Selecting a course unlocks other courses. Unselecting a course locks courses. Due to the complex nature of UNSW enrolment conditions, this step is very algorithm heavy and requires constant communication with the Webscraping team.
At UNSW, you must meet certain requirements in order to complete your program. For example, in SENGAH, you must complete all your level 1, 2, 3 and 4 core courses, 36 units of Discipline Electives, 168 total units, etc.
Tech Stack | Scraper
Python is used for web scraping and interpreting course conditions
Javascript and Shell is currently used for data processing (can be changed to Python, this is very flexible)
Tech Stack | Frontend
React-JS Framework
Redux for state management
Ant Design component library
Tech Stack | Backend
MongoBD database
Mongo Atlas for cloud database hosting
FastAPI to build our APIs
Add Comment