Visit this here: https://github.com/FlipFloop/GaTechCourseChecker.
Help is needed on this project, specifically with the auto-updater!
What is this?
It’s an open-source project on GitHub to help students at Georgia Tech see if a class they are trying to register for has available seats or waitlist spots.
It should be available in the future in the form of a website, but at the time of publication of this page, it’s simply a desktop app. I prefer the latter.
What tech is used under the hood?
Rust and Solid.js (using typescript, ofc).
Rust powers two parts of the project:
- web scraping
- desktop app wrapping
A rust script runs the lookup for classes and parses the data before sending it to the frontend. Sending to the frontend part and app wrapping is done thanks to Tauri (an early stage alternative to Electron.js).
Then, the frontend is powered by Solid.js and TypeScript. I used SolidToast for the notification-like alerts. As always, CSS was dropped for SCSS.
Why did you make this?
I got frustrated because I couldn’t register for a few courses because all the spots were taken and didn’t want to refresh the registration site or gt-scheduler. So I decided make a scraper of sorts.
At first I was going to use Python, but instead switched to Rust as I wanted to learn it for a while.
At the time of publication, the code is not super pretty and I don’t get all the quirks, so maybe the banner image of this project makes Rustaceans (Rust developers) cringe. This was my first real Rust project, and I had no real clue how to properly do things, so I think for a first pass done in a couple of ~3-4 hour sessions, it’s fine.
Also, I knew that if I used Rust I could transform it into a Tauri app.
I decided to go with Solid.js as I told myself I was going to use it over the summer, but ultimately I didn’t. Solid.js does live up to the hype. Super easy, super fast, very convenient.
What more work needs to be done?
As of May 11th 2023, this project somewhat lost its appeal as Georgia Tech vastly improved the course registration system. I will therefore not continue this project, and probably never do web scraping with Rust again.
I can’t seem to figure out this updater stuff… Please reach out to me if you can help!
As of November 25th:
- Updater — WIP
- Desktop notifications
- Test a Linux Build
- Test a Windows Build
- Run in the background option
- Auto-check
- LocalStorage
- Test a Mac Build
- Updating a course after it was added won’t crash the app if it’s invalid.