GMC: Give Me My Course
A service that emails University of Guelph students the moment a seat opens in a full course.
- Role
- Solo: backend, frontend, infrastructure
- Stack
- Go, vanilla JavaScript
- Runs
- During course selection windows
The problem
Popular courses fill up within minutes of registration opening. Seats free up later as students drop, but they go to whoever happens to refresh the page at the right moment. Students end up checking the registration system over and over for days.
GMC does the checking for them. You sign up for the sections you want, and it emails you as soon as one has an open seat, so you can register before anyone else notices.
How it's built
Concurrent polling in Go
The backend watches many sections at once using goroutines and channels. Moving to this concurrent design cut server response time by 60%.
Two data stores, two jobs
Firestore holds subscribers and the sections they're watching. MongoDB stores audit logs, kept separate so the service stays stateless and fits a serverless deployment.
CI/CD to Google Cloud Run
A GitHub Actions pipeline runs the tests, builds a Docker image, publishes it to Docker Hub and GitHub Releases, and deploys to Google Cloud Run. You can also self-host it from the prebuilt binaries, the Docker image, or from source.