Add a university
Gapwise has one web application in gapwise. The manifest selects an institution by hostname. Timetable adapters return the shared meeting model; Today, Timetable, Gap Plan, Campus Map, and Day Route consume that model and the selected campus catalog. University facts and routing evidence belong in data.
Gapwise currently supports 13 universities across Canada: University of Toronto (gapwise.ca), Carleton University (carleton.gapwise.ca), Toronto Metropolitan University (tmu.gapwise.ca), Queen’s University (queens.gapwise.ca), Wilfrid Laurier University (laurier.gapwise.ca), York University (york.gapwise.ca), McMaster University (mcmaster.gapwise.ca), Western University (western.gapwise.ca), University of Guelph (guelph.gapwise.ca), University of Ottawa (uottawa.gapwise.ca), Brock University (brock.gapwise.ca), the University of British Columbia (ubc.gapwise.ca), and the University of Waterloo (waterloo.gapwise.ca). All editions are built from the unified gapwise and data codebase.
Create a scaffold
Section titled “Create a scaffold”Check out gapwise, data, and cli as sibling repositories. From cli:
gapwise university create example-university --dry-rungapwise university create example-university \ --name "Example University" --short-name ExampleSee the CLI installation and usage guide before running these commands. The tmu ID is already registered and cannot be created again.
The command adds one entry to gapwise/universities.json, a timetable adapter and failing fixture test, and empty campus/academic snapshots. It creates no product screen or style copy. The new entry has status: scaffold, routing disabled, and no invented buildings, entrances, or paths.
Add evidence and ingestion
Section titled “Add evidence and ingestion”- Confirm the timetable export format and implement
gapwise/src/universities/<id>/adapter.ts. Return canonicalParsedTimetablemeetings with stable identifiers, weekdays, times, campus, location, and date ranges. Keep source-specific interpretation inside the adapter. - Add source-backed buildings, aliases, footprints, entrances, and pedestrian edges to
data/universities/<id>/campus.json. Preserve source IDs, attribution, rights, and unknown access values. Follow the shared schemas indata/schemas/universities/. - Optionally run
gapwise data osm <id> --bbox=west,south,east,north. This creates unreviewed OpenStreetMap candidates only. Inspect their provenance and geometry; do not promote candidate entrances or routes without review. - Run the campus sync in
gapwise:bun scripts/sync-campus-data.ts --write. This mirrors validated snapshots and generates the compact map catalog. The routing graph is loaded separately when needed. - Add a real timetable fixture test and review the manifest’s host, campus list, feature flags, and status. Enable routing only where path connectivity and access evidence justify it.
Verify and deploy
Section titled “Verify and deploy”gapwise data validate example-universitygapwise university validate example-universitygapwise university test example-universitygapwise university dev example-universityRun the gapwise typecheck, lint, unit tests, production build, and browser tests. Check desktop and mobile map selection, timetable import, Today, gap calculations, and route states. The local development URL uses ?university=tmu; production host resolution uses the manifest. Configure DNS and the hosting provider for tmu.gapwise.ca, then verify the preview and live host before announcing support.
Changes to Today, TimetableGrid, GapPlan, CampusMap, DayRoute, shared navigation, or global CSS should be justified as product-wide changes. Adding another institution ordinarily changes the manifest, adapter, data, fixtures, and deployment configuration only.