A course search and review platform for McGill university.
You'll need docker, cargo and pnpm installed on your machine to spawn the various components the project needs to run locally.
First, join the discord server to get access to the development environment variables:
In .env within the root directory you'll have to set
MS_CLIENT_ID=
MS_CLIENT_SECRET=
MS_REDIRECT_URI=http://localhost:8000/api/auth/authorized
...and then in client/.env you'll have to set the server url
VITE_API_URL=http://localhost:8000
Second, mount a local mongodb instance with docker and initiate the replica set:
docker compose up --no-recreate -dSpawn the server with a data source (in this case the /seed directory) and
initialize the database (note that seeding may take some time on slower
machines):
cargo run -- --source=seed serve --initialize --db-name=mcgill-coursesFinally, spawn the react frontend:
pnpm install
pnpm run devn.b. If you have just installed, we provide a
dev recipe for doing all of the above in addition to running a watch on the
server:
just devSee the justfile for more recipes.
We have a few tools that we use for project-specific maintenance tasks. You can
find all of them under the
tools directory
from the project root.
For python-based tools, we highly recommend you install uv on your system. On macOS or linux, you can do it as follows:
curl -LsSf https://astral.sh/uv/install.sh | shFollow the documentation for other systems.
We continuously deploy our site with Render using a docker image, and have a MongoDB instance hosted on Atlas.
We also use S3 to host a bucket for referring to a hash when deciding whether or not to seed courses in our production environment, and Microsoft's identity platform for handling our OAuth 2.0 authentication flow.
There are a few notable projects worth mentioning that are similar in nature to mcgill.courses, and have either led to inspiration or new ideas with regard to its functionality and design, namely:
- uwflow.com - A course search and review platform for the University of Waterloo
- cloudberry.fyi - A post-modern schedule builder for McGill students
- mcgill.wtf - A fast full-text search engine for McGill courses
