Skip to content

Repository files navigation

mcgill.courses

CI codecov discord website

A course search and review platform for McGill university.

Development

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:

https://discord.gg/fSVSqfPHSV

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 -d

Spawn 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-courses

Finally, spawn the react frontend:

pnpm install
pnpm -r run dev

n.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 dev

See the justfile for more recipes.

Tools

We have a few Rust tools for project-specific maintenance tasks. You can find all of them under the tools directory from the project root.

Since each tool is a Cargo workspace package, you can run them from the project root with:

cargo run -p <package> <arguments>

For example:

cargo run -p search-index-aggregator
cargo run -p requirement-parser seed/courses-2025-2026.json

Each tool includes a local README with detailed flags, input formats, output formats, and any authentication requirements.

Deployment

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.

Prior Art

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

About

A course search and review platform for McGill University

Resources

Contributing

Stars

57 stars

Watchers

2 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages