Skip to content

pl4nty/anutimetable

Repository files navigation

ANU Unofficial Timetable

Website status Build status Scraper status

About

This is an unofficial alternative timetable viewer for the Australian National University built by members of the ANU Computer Science Students' Association. It's available here. It serves as an up-to-date (automatically updated each day), fast, easy to use alternative to the official timetable. It replaces the old unofficial timetable here which has not been updated for 2022.

Development

Important

The source of the course data is currently the old timetable (timetabling.anu.edu.au), so there will be differences between this timetable and MyTimetable. Particularly, some courses are, for whatever reason, not added there, and there is currently nothing we can do to add them to this timetable.

We will be switching to new APIs with a planned rewrite, so this issue should be eventually resolved. In the meantime, if in doubt, refer to MyTimetable.

Components:

  • A React.js front-end in /src and /public. It's hosted as an Azure Static Web App by @pl4nty (free tier). Commits to master are deployed to timetable.cssa.club minutes later via a GitHub Action. Commits to open PR's are pushed to staging URL's for testing.
  • A Python scraping script in scraper inherited from anutimetable.com that scrapes the official ANU timetable website. It is run once a day by a GitHub Action and the results are saved to public/timetable*.json.
  • Several Azure functions in /api hosted by @pl4nty (free tier plan). These generate useful data on the fly like the calendar exports (GetICS) which can be linked to your calendar software (so they automatically update) or downloaded (as an ICS file).

Local development:

  • First time setup
    • Install node
    • Navigate to the root of the repo and run npm ci
    • Navigate to the api subfolder and run npm ci again
    • Run sudo npm i -g @azure/static-web-apps-cli azure-functions-core-tools
  • Running it
    • In VSCode, open the repo and press the run button (F5)
    • In other editors, run the commands in the .vscode config in a terminal

Future directions:

  • Move away from Azure functions (to client side logic and GitHub Actions where possible)
  • The Class Allocation Project team intend to roll out a new timetabling experience in semester 2 2022 or 2023 eventually. Once this transition is complete this project will be archived or rewritten as the Python scraper will be obsolete.

Contributing:

  • If you would like to contribute bug reports or to the development, please join the CSSA Discord server and chat with us in the #timetable channel

Changelog

2022-03-22

2022-02-14

  • Caching of selected classes and tutorials thanks to @CraftyDH
  • Removed the service worker for faster updates thanks to @OliverBalfour

2022-01-13

2021-10-24

  • Calendar file generator (ICS/webcal) thanks to @pl4nty, available at /api/GetICS eg /api/GetICS?COMP2310_S2 or /api/GetICS?COMP2310_S2=ComA 01,COMP2310_S2=ComB 01

2021-07-17

  • Integration with existing scraper and frontend fixes thanks to @OliverBalfour

2021-04-18

  • Frontend rewritten in React with ANU's official API and GitHub Actions thanks to @pl4nty

See old_changelog.md for changes prior to the rewrite