Skip to main content

A browser-based University of Waterloo course planner backed by live MongoDB data

Project description

uw-course

uw-course is a browser-based University of Waterloo course planner built on top of the live MongoDB course database.

Web app screenshot

The project no longer uses the old TUI or PDF export flow. The current app is a Flask web interface with:

  • term-aware course search
  • section browsing with course descriptions and prerequisites
  • weekly timetable view
  • plan import/export
  • auto-resolution for course-only plans such as CS 341

Install

pip install uw-course

For local development in this repository:

pip install -e .

Run

Start the web app with either entrypoint:

uw-course

or

python -m uw_course

By default the server runs at http://127.0.0.1:8000.

Optional environment variables:

  • UW_COURSE_HOST
  • UW_COURSE_PORT
  • UW_COURSE_DEBUG
  • MONGODB_URI

Plan Format

The planner accepts plain text in this format:

Class2026Winter

CS 341
MATH 239
STAT 230, 1234

Rules:

  • the first line is the term collection name
  • COURSE CODE means "auto-resolve a section for this course"
  • COURSE CODE, CLASS_ID means "lock this exact section"

Web API

The web app exposes JSON endpoints:

  • GET /api/terms
  • GET /api/courses?term=Class2026Spring&q=CS%20341
  • GET /api/courses/<course_code>?term=Class2026Spring
  • POST /api/schedule
  • POST /api/plan/parse
  • POST /api/plan/export
  • POST /api/plan/resolve

Notes

  • MongoDB data is read directly from the configured collections.
  • Class2026Winter and similar term names must match the real collection names exactly.
  • If a course cannot be auto-resolved, the backend returns the unresolved reason.

License

See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uw_course-3.0.0.tar.gz (2.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uw_course-3.0.0-py3-none-any.whl (2.5 MB view details)

Uploaded Python 3

File details

Details for the file uw_course-3.0.0.tar.gz.

File metadata

  • Download URL: uw_course-3.0.0.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for uw_course-3.0.0.tar.gz
Algorithm Hash digest
SHA256 50e513eb11a36986328733d0d6cb295d2f8fd788f0953e39cdd7f78a42c757bd
MD5 38d3186ff96c7fbb71d301aef8b37a93
BLAKE2b-256 609efb9024041a5799a2ab03c11287c7a7e51162c84c4619fb399b7bf4427fa8

See more details on using hashes here.

Provenance

The following attestation bundles were made for uw_course-3.0.0.tar.gz:

Publisher: publish-to-pypi.yml on zangjiucheng/uw-course

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file uw_course-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: uw_course-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for uw_course-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c04b80f0d24b7c6877370a191d4824fa003550f6deae8663293d3c5bc0aae8f0
MD5 6a33f592790906d64155b71d17dc53f5
BLAKE2b-256 ff5f272a93c58732205ba2822371163ae47640482fe75a630f1343d7064446fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for uw_course-3.0.0-py3-none-any.whl:

Publisher: publish-to-pypi.yml on zangjiucheng/uw-course

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page