A visual class schedule planner for MIT. Built for planning lectures, labs, recitations, and midterms across the semester.
Pre-configured with MIT Registrar key dates. The JSON-based semester data makes it adaptable for other institutions.
Why the name? Hydrant helps students pick classes. Valve helps instructors plan them.
- Visual Calendar: Week-by-week semester view with color-coded events
- Event Types: Toggle lectures, labs, and recitations by day of the week
- Midterm Placement: Drag-and-drop midterms onto specific dates
- Lecture Topics: Manage and reorder topics via drag-and-drop or paste from a list
- Academic Calendar: Automatically handles holidays, breaks, and finals periods
- Save/Load: Export and import configurations as JSON
- List view
- iCal/Google Calendar export
- Canvas/CAT-SOOP sync
- Section-based alternative scheduling
- Go to shenshen.mit.edu/valve
- Select a semester from the dropdown
- Choose which days your class meets for each event type
- Drag midterms to their dates
- Add lecture topics in the sidebar
- Save your configuration
valve/
├── index.html # Main page
├── app.js # Application logic
├── styles.css # Styling
├── semesters/ # Semester configurations (JSON)
├── theme/ # Branding assets
└── verifiers/ # Python validation scripts
Vanilla HTML/CSS/JavaScript with no dependencies. Python scripts for data validation.
The "Last Updated" footer is automatically set by a git pre-commit hook.
To set up the pre-commit hooks (auto-updates the "Last Updated" date):
# Install pre-commit (one-time)
brew install pre-commit # macOS
# or: pip install pre-commit # other platforms
# Install the hooks (one-time per clone)
pre-commit install