https://github.com/terror/mcgill.wtf
A low-latency full-text search of mcgill's entire course catalog
https://github.com/terror/mcgill.wtf
Last synced: 10 months ago
JSON representation
A low-latency full-text search of mcgill's entire course catalog
- Host: GitHub
- URL: https://github.com/terror/mcgill.wtf
- Owner: terror
- License: cc0-1.0
- Created: 2022-09-03T23:45:21.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2023-05-10T23:23:37.000Z (over 2 years ago)
- Last Synced: 2025-03-14T22:03:19.837Z (10 months ago)
- Language: Rust
- Homepage: https://mcgill.wtf
- Size: 206 KB
- Stars: 9
- Watchers: 2
- Forks: 4
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING
- License: LICENSE
Awesome Lists containing this project
README
### mcgill.wtf
**mcgill.wtf** is a fast full-text search of [McGill](https://mcgill.ca)'s
entire course catalog with a server implemented in [Rust](https://www.rust-lang.org/)
and an intuitive front-end built using [React](https://reactjs.org/).
### Development
#### Downloading course data
In order the query the server for courses, you need to specify a data-source,
which can be downloaded via the `download` subcommand provided by the server
binary:
```bash
$ RUST_LOG=info cargo run -- download --starting-page
```
#### Spawning the front and back-end components
In order to run the server locally you need [Docker](https://www.docker.com/)
and [Cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html)
installed on your machine. By default the server listens for requests on port
`7500` and can be spawned by running the `serve` script in the `/bin` directory
located in the project root:
```bash
$ RUST_LOG=info ./bin/serve -l -d
```
The front-end is now able to issue requests to the server, launch it by invoking
the following commands:
```bash
$ npm run install
$ npm run dev
```
### Credits
This project was heavily inspired by Eric Zhang's implementation of
[classes.wtf](https://classes.wtf), and was also built for some of the same
reasons.