diff --git a/CAMPUS_DATA_OWNERSHIP.md b/CAMPUS_DATA_OWNERSHIP.md index 0d83f82..7627150 100644 --- a/CAMPUS_DATA_OWNERSHIP.md +++ b/CAMPUS_DATA_OWNERSHIP.md @@ -1,6 +1,6 @@ # Campus data ownership -Canonical public campus facts and geometry across all 13 supported Canadian universities (15 campus models) live in `GapwiseHQ/data`. University datasets live under their canonical identifiers (e.g. `universities/carleton`, `universities/ubc`, and `universities/waterloo`); UTM's reviewed entrance/routing dataset lives under `data/utm`, and UTSG and UTSC identities and geometry live in their respective campus directories. +Canonical public campus facts and geometry across all 14 supported Canadian universities (16 campus models) live in `GapwiseHQ/data`. University datasets live under their canonical identifiers (e.g. `universities/carleton`, `universities/ubc`, `universities/waterloo`, and `universities/mcgill`); UTM's reviewed entrance/routing dataset lives under `data/utm`, and UTSG and UTSC identities and geometry live in their respective campus directories. `gapwise` consumes a validated build-time snapshot and remains authoritative for deterministic routing/gap-planning behavior, the public API/OpenAPI contract, SDK semantics, and product presentation. `docs` documents released contracts; it must not become an independent source of campus facts or product behavior. diff --git a/ECOSYSTEM.md b/ECOSYSTEM.md index 6cc2c61..dcb6313 100644 --- a/ECOSYSTEM.md +++ b/ECOSYSTEM.md @@ -12,7 +12,7 @@ All first-party product repositories are owned by the **Gapwise** GitHub organiz | `GapwiseHQ/android` | native Android implementation, Android device integration, persistence adapters, and Android distribution behavior | | `GapwiseHQ/ios` | native iOS implementation, Apple-platform integration, persistence adapters, and iOS distribution behavior | | `GapwiseHQ/ai` | OAuth/MCP delegation, tool schemas, permissions, bounded mutations, AI compatibility evidence | -| `GapwiseHQ/data` | **canonical public campus facts and geometry across 13 supported universities (15 campus models)**, entrances, routing graph data, provenance, schemas, evidence, attribution, validation, and reuse | +| `GapwiseHQ/data` | **canonical public campus facts and geometry across 14 supported universities (16 campus models)**, entrances, routing graph data, provenance, schemas, evidence, attribution, validation, and reuse | | `GapwiseHQ/docs` | released public developer documentation and documentation information architecture | | `GapwiseHQ/status` | operational health and incident communication | @@ -20,7 +20,7 @@ All first-party product repositories are owned by the **Gapwise** GitHub organiz ## Product scope -Gapwise supports 13 Canadian universities across 15 campus models. The first-party public campus API, reviewed building/entrance and pedestrian route graph, places, and production data support multi-university discovery and campus models. Documentation must preserve specific campus provenance, entrance, and accessibility depth instead of implying identical evidence across all campuses. +Gapwise supports 14 Canadian universities across 16 campus models. The first-party public campus API, reviewed building/entrance and pedestrian route graph, places, and production data support multi-university discovery and campus models. Documentation must preserve specific campus provenance, entrance, and accessibility depth instead of implying identical evidence across all campuses. ## Current developer-platform state @@ -43,7 +43,7 @@ TypeScript and Python are equal first-party SDKs. Documentation should provide c ## Documentation rules 1. OpenAPI + core implementation own public HTTP behavior and deterministic calculations. -2. `data` owns raw public campus facts across 13 supported universities, geometry, routing graph data, provenance, and evidence. +2. `data` owns raw public campus facts across 14 supported universities, geometry, routing graph data, provenance, and evidence. 3. SDK docs follow released package/source behavior and never invent methods or types. 4. Registry claims are evidence-based: reserved/configured is not the same as published. 5. Runtime claims are evidence-based: Node/Bun/Deno/browser support should reflect CI/release verification rather than assumptions. diff --git a/README.md b/README.md index 7504fd4..08a9b26 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ This repository is the canonical public developer-documentation surface for **Gapwise**, a free and open-source multi-university timetable and campus-intelligence platform created and engineered by **Andrew Muratov**. -Gapwise currently supports **13 universities across 15 campus models in Canada**: +Gapwise currently supports **14 universities across 16 campus models in Canada**: 1. **University of Toronto** (`gapwise.ca`) — Mississauga, St. George, and Scarborough 2. **Carleton University** (`carleton.gapwise.ca`) — Ottawa campus @@ -40,6 +40,7 @@ Gapwise currently supports **13 universities across 15 campus models in Canada** 11. **Brock University** (`brock.gapwise.ca`) — St. Catharines campus 12. **University of British Columbia** (`ubc.gapwise.ca`) — Vancouver / Point Grey campus 13. **University of Waterloo** (`waterloo.gapwise.ca`) — Main campus +14. **McGill University** (`mcgill.gapwise.ca`) — Downtown Montreal campus The documentation describes the multi-university architecture, public campus API, SDKs, data layers, and permissioned AI/MCP integration without presenting Gapwise as a single-institution product. diff --git a/astro.config.mjs b/astro.config.mjs index 6773476..1b34cfd 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -140,6 +140,7 @@ export default defineConfig({ items: [ { label: "Recipes", slug: "guides/recipes" }, { label: "Add a university", slug: "guides/add-university" }, + { label: "McGill University", slug: "guides/mcgill" }, ], }, { diff --git a/src/content/docs/ai/index.md b/src/content/docs/ai/index.md index 473e548..f4b26b8 100644 --- a/src/content/docs/ai/index.md +++ b/src/content/docs/ai/index.md @@ -1,6 +1,6 @@ --- title: Gapwise AI & MCP -description: Connect AI clients to public campus intelligence across 13 supported universities and explicitly delegated Gapwise context without turning deterministic facts into model guesses. +description: Connect AI clients to public campus intelligence across 14 supported universities and explicitly delegated Gapwise context without turning deterministic facts into model guesses. --- Gapwise AI is the **remote Model Context Protocol (MCP) integration boundary** between an AI client and Gapwise. It exposes stateless public campus intelligence plus narrowly permissioned private student context without giving a client unrestricted account access. diff --git a/src/content/docs/api.md b/src/content/docs/api.md index ff0851b..debaa02 100644 --- a/src/content/docs/api.md +++ b/src/content/docs/api.md @@ -3,7 +3,7 @@ title: API overview description: The public Gapwise campus intelligence API v1. --- -Gapwise exposes public campus primitives across 13 supported Canadian universities (and 15 campus models) over HTTPS. The canonical production base URL is `https://api.gapwise.ca/v1`. The API is intentionally unauthenticated and preserves provenance, verification state, and uncertainty instead of fabricating missing facts. +Gapwise exposes public campus primitives across 14 supported Canadian universities (and 16 campus models) over HTTPS. The canonical production base URL is `https://api.gapwise.ca/v1`. The API is intentionally unauthenticated and preserves provenance, verification state, and uncertainty instead of fabricating missing facts. ## Public API or AI & MCP? @@ -23,8 +23,8 @@ The two surfaces are intentionally separate: | Method | Endpoint | Purpose | | --- | --- | --- | | `GET` | `/v1` | API capabilities, versions, and privacy boundary | -| `GET` | `/v1/universities` | Discover all 13 supported universities, editions, and capabilities | -| `GET` | `/v1/campuses` | Discover all 13 supported campus models and metadata | +| `GET` | `/v1/universities` | Discover all 14 supported universities, editions, and capabilities | +| `GET` | `/v1/campuses` | Discover all 16 supported campus models and metadata | | `GET` | `/v1/buildings` | Search and list canonical buildings for any supported university/campus | | `GET` | `/v1/buildings/:building` | Resolve one building by code, exact name, or recognized alias | | `GET` | `/v1/places` | Search and list campus places | diff --git a/src/content/docs/api/buildings.md b/src/content/docs/api/buildings.md index 96aae98..3b25719 100644 --- a/src/content/docs/api/buildings.md +++ b/src/content/docs/api/buildings.md @@ -3,7 +3,7 @@ title: Buildings description: Canonical building identity, discovery, pagination, and provenance across supported universities. --- -The v1 building resources expose stable Gapwise identities for recognized campus buildings across 13 supported universities. Identity/search coverage does not imply that every entrance, indoor path, floor, or accessibility detail has been surveyed. +The v1 building resources expose stable Gapwise identities for recognized campus buildings across 14 supported universities. Identity/search coverage does not imply that every entrance, indoor path, floor, or accessibility detail has been surveyed. ## List and search diff --git a/src/content/docs/cli.md b/src/content/docs/cli.md index f5fb223..f1bd40e 100644 --- a/src/content/docs/cli.md +++ b/src/content/docs/cli.md @@ -26,7 +26,7 @@ gapwise campuses --university carleton gapwise campuses --university york ``` -Gapwise currently supports 13 universities and 15 campus models. Discovery shows canonical IDs, names, and routing availability. Public campus queries require `--university ID`; otherwise the API's historical U of T default could silently give the wrong edition's data. `--campus` selects one of that university's campus IDs; omitting it uses that university's default campus. +Gapwise currently supports 14 universities and 16 campus models. Discovery shows canonical IDs, names, and routing availability. Public campus queries require `--university ID`; otherwise the API's historical U of T default could silently give the wrong edition's data. `--campus` selects one of that university's campus IDs; omitting it uses that university's default campus. ## Query public campus facts diff --git a/src/content/docs/data/datasets.md b/src/content/docs/data/datasets.md index 09ca7ff..0ed37d9 100644 --- a/src/content/docs/data/datasets.md +++ b/src/content/docs/data/datasets.md @@ -3,7 +3,7 @@ title: Dataset catalog description: Canonical campus datasets and raw artifacts published by Gapwise Data. --- -Gapwise Data publishes canonical campus datasets across 13 supported universities (15 campus models). Campus-wide models are maintained under `universities//campus.json` containing buildings, coordinates, and navigation metadata. In addition, the reviewed UTM subtree lives under `data/utm`, distributed as raw artifacts at `https://data.gapwise.ca/datasets/utm/latest/`. Additional university datasets (such as UBC Vancouver, Carleton, Queen's, Western, Ottawa, McMaster, Laurier, York, Guelph, Brock, UTSG, and UTSC) live in their own canonical directories. +Gapwise Data publishes canonical campus datasets across 14 supported universities (16 campus models). Campus-wide models are maintained under `universities//campus.json` containing buildings, coordinates, and navigation metadata. In addition, the reviewed UTM subtree lives under `data/utm`, distributed as raw artifacts at `https://data.gapwise.ca/datasets/utm/latest/`. Additional university datasets (such as UBC Vancouver, Waterloo Main, McGill Downtown, Carleton, Queen's, Western, Ottawa, McMaster, Laurier, York, Guelph, Brock, UTSG, and UTSC) live in their own canonical directories. ## Major surfaces diff --git a/src/content/docs/data/distribution.md b/src/content/docs/data/distribution.md index cd25142..b12432a 100644 --- a/src/content/docs/data/distribution.md +++ b/src/content/docs/data/distribution.md @@ -10,10 +10,10 @@ Gapwise separates **canonical ownership**, **public distribution**, and **runtim To discover available universities and campus models programmatically, use the public API discovery endpoints: ```bash -# Discover 13 supported universities +# Discover 14 supported universities curl https://api.gapwise.ca/v1/universities -# Discover 15 campus models and metadata +# Discover 16 campus models and metadata curl https://api.gapwise.ca/v1/campuses ``` diff --git a/src/content/docs/data/index.md b/src/content/docs/data/index.md index 946cd32..5057d7f 100644 --- a/src/content/docs/data/index.md +++ b/src/content/docs/data/index.md @@ -3,7 +3,7 @@ title: Gapwise Data description: Canonical multi-university campus data, schemas, provenance, distribution, and reuse. --- -Gapwise Data is the canonical public source for campus facts and geometry across 13 supported Canadian universities (15 campus models) used throughout the Gapwise ecosystem. Building identity, footprints, and metadata cover all supported institutions; additional reviewed exterior entrance registries and routing graphs are maintained for institutions like UTM and Carleton. +Gapwise Data is the canonical public source for campus facts and geometry across 14 supported Canadian universities (16 campus models) used throughout the Gapwise ecosystem. Building identity, footprints, and metadata cover all supported institutions; additional reviewed exterior entrance registries and routing graphs are maintained for institutions like UTM, UBC Vancouver, Waterloo Main, and McGill Downtown. - **Portal:** `https://data.gapwise.ca` - **Entrance contributor (UTM):** `https://data.gapwise.ca/contribute` diff --git a/src/content/docs/guides/add-university.md b/src/content/docs/guides/add-university.md index 67b6334..511c5ef 100644 --- a/src/content/docs/guides/add-university.md +++ b/src/content/docs/guides/add-university.md @@ -5,7 +5,7 @@ description: Add a timetable adapter and reviewed campus data to the shared Gapw 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. +Gapwise currently supports 14 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`), the University of Waterloo (`waterloo.gapwise.ca`), and McGill University (`mcgill.gapwise.ca`). All editions are built from the unified `gapwise` and `data` codebase. ## Create a scaffold diff --git a/src/content/docs/guides/mcgill.md b/src/content/docs/guides/mcgill.md new file mode 100644 index 0000000..5c38b71 --- /dev/null +++ b/src/content/docs/guides/mcgill.md @@ -0,0 +1,25 @@ +--- +title: McGill University edition +description: Import a myCourses calendar and use Gapwise's source-backed downtown campus navigation. +--- + +The McGill edition is available at [mcgill.gapwise.ca](https://mcgill.gapwise.ca). Its initial campus scope is the downtown Montreal campus. Gapwise does not currently claim coverage of Macdonald Campus, indoor routes, construction detours, or verified step-free paths. + +## Import a timetable + +Gapwise accepts the standard `.ics` calendar export documented by McGill for myCourses: + +1. Open the myCourses Calendar and enable calendar feeds. +2. Choose **Subscribe** and select the course events to export. +3. Choose **Download** and save the `.ics` file. +4. Open `mcgill.gapwise.ca` and import that file locally in the browser. + +Gapwise does not ask for a McGill username or password, scrape Minerva, or upload the original calendar file. Events whose summaries do not contain a recognizable McGill course code remain excluded with an import warning; unmatched physical locations remain visible without being attached to an invented building. + +McGill's official instructions are available in the [myCourses calendar guide](https://teachingkb.mcgill.ca/tlk/organize-your-course-schedule-and-create-task-list). + +## Campus data and routing + +The downtown model combines factual building identity from McGill's published campus map and exam-location directory with redistributable OpenStreetMap footprints, entrance nodes, and outdoor pedestrian ways. Explicitly mapped entrances retain their OSM identity. Short building-to-path connectors are labeled inferred, and entrance access remains unknown unless the source explicitly marks it restricted. + +The initial release includes building discovery, outdoor pedestrian routing, Day Route, and between-class planning for mapped downtown locations. Step-free routing is unavailable because accessibility has not been verified for this graph. See the [Gapwise Data source notes](https://github.com/GapwiseHQ/data/blob/main/docs/universities/mcgill-sources.md) for the exact provenance and exclusions. diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx index 4ac4b40..2d9c914 100644 --- a/src/content/docs/index.mdx +++ b/src/content/docs/index.mdx @@ -74,7 +74,7 @@ Pick the interface that matches the semantics and trust boundary your project ac ### Public campus platform -The canonical public API exposes versioned buildings and places across 13 supported Canadian universities (and 15 campus models), deterministic building-to-building routing, and route-aware assessment of an explicitly supplied free interval. +The canonical public API exposes versioned buildings and places across 14 supported Canadian universities (and 16 campus models), deterministic building-to-building routing, and route-aware assessment of an explicitly supplied free interval. - API base: `https://api.gapwise.ca/v1` - OpenAPI 3.1: `https://api.gapwise.ca/openapi.json` @@ -90,7 +90,7 @@ Successful responses use `{ data, meta }`; errors use a nested structured error ### Canonical open campus data -Gapwise Data is the canonical repository for public campus facts and geometry across 13 supported universities (15 campus models). It owns university- and campus-scoped building identity, footprints, and metadata. Its production distribution includes reviewed entrances, routing graph inputs, provenance, evidence state, uncertainty, and generated data audits, with specialized raw artifacts for campuses such as UTM. +Gapwise Data is the canonical repository for public campus facts and geometry across 14 supported universities (16 campus models). It owns university- and campus-scoped building identity, footprints, and metadata. Its production distribution includes reviewed entrances, routing graph inputs, provenance, evidence state, uncertainty, and generated data audits, with specialized raw artifacts for campuses such as UTM. Raw artifacts are published under: diff --git a/src/content/docs/platform/ecosystem.md b/src/content/docs/platform/ecosystem.md index a02d9c6..84506b9 100644 --- a/src/content/docs/platform/ecosystem.md +++ b/src/content/docs/platform/ecosystem.md @@ -30,7 +30,7 @@ hostname -> universities.json -> university timetable adapter -> shared meetings data/universities//campus.json -> campus catalog + path graph -> shared UI/routing ``` -Gapwise resolves hostnames dynamically: `gapwise.ca` selects U of T, `carleton.gapwise.ca` selects Carleton, `tmu.gapwise.ca` selects TMU, `queens.gapwise.ca` selects Queen's, `laurier.gapwise.ca` selects Laurier, `york.gapwise.ca` selects York, `mcmaster.gapwise.ca` selects McMaster, `western.gapwise.ca` selects Western, `guelph.gapwise.ca` selects Guelph, `uottawa.gapwise.ca` selects uOttawa, `brock.gapwise.ca` selects Brock, `ubc.gapwise.ca` selects UBC Vancouver, and `waterloo.gapwise.ca` selects the University of Waterloo main campus. See [Add a university](/guides/add-university/) for the scaffold, data, testing, and deployment workflow. +Gapwise resolves hostnames dynamically: `gapwise.ca` selects U of T, `carleton.gapwise.ca` selects Carleton, `tmu.gapwise.ca` selects TMU, `queens.gapwise.ca` selects Queen's, `laurier.gapwise.ca` selects Laurier, `york.gapwise.ca` selects York, `mcmaster.gapwise.ca` selects McMaster, `western.gapwise.ca` selects Western, `guelph.gapwise.ca` selects Guelph, `uottawa.gapwise.ca` selects uOttawa, `brock.gapwise.ca` selects Brock, `ubc.gapwise.ca` selects UBC Vancouver, `waterloo.gapwise.ca` selects the University of Waterloo main campus, and `mcgill.gapwise.ca` selects McGill's downtown Montreal campus. See [Add a university](/guides/add-university/) for the scaffold, data, testing, and deployment workflow. ## Source-of-truth flow diff --git a/src/content/docs/platform/institutional-brief.md b/src/content/docs/platform/institutional-brief.md index 84edf12..cbc3440 100644 --- a/src/content/docs/platform/institutional-brief.md +++ b/src/content/docs/platform/institutional-brief.md @@ -16,7 +16,7 @@ Gapwise is an independent, open-source student platform created by Andrew Murato While existing institutional portals typically end at exporting calendar blocks or displaying static PDF campus maps, Gapwise connects student schedules to verified campus geometry: - **True Usable Time**: Automatically deducts walking travel time, room transition buffers, and meal periods from raw breaks to show true productive study windows. - **Pedestrian Navigation**: Computes outdoor walking routes between verified campus building entrances, including step-free accessibility options. -- **Multi-University Scale**: Supports **13 Canadian universities and 15 campus models**, mapping academic buildings, source-classified entrances, student places, and 199 university residences. +- **Multi-University Scale**: Supports **14 Canadian universities and 16 campus models**, mapping academic buildings, source-classified entrances, student places, and 199 university residences. --- @@ -32,7 +32,7 @@ Gapwise was engineered from day one to demonstrate that student software can be ## Platform Scope & University Coverage -Gapwise currently serves 13 Canadian universities across 15 campus models with dedicated, edition-specific web portals: +Gapwise currently serves 14 Canadian universities across 16 campus models with dedicated, edition-specific web portals: | University | Campus Model(s) | Status | Edition URL | | :--- | :--- | :---: | :--- | @@ -49,6 +49,7 @@ Gapwise currently serves 13 Canadian universities across 15 campus models with d | **Brock University** | St. Catharines Campus | Supported | `brock.gapwise.ca` | | **University of British Columbia** | Vancouver / Point Grey Campus | Supported | `ubc.gapwise.ca` | | **University of Waterloo** | Main Campus | Supported | `waterloo.gapwise.ca` | +| **McGill University** | Downtown Montreal Campus | Supported | `mcgill.gapwise.ca` | --- diff --git a/src/content/docs/quickstart.md b/src/content/docs/quickstart.md index 1d9c8c1..6db94ba 100644 --- a/src/content/docs/quickstart.md +++ b/src/content/docs/quickstart.md @@ -20,7 +20,7 @@ Use the public platform when you need canonical campus data or deterministic cam ### Gapwise AI & MCP -Use Gapwise AI when a compatible remote MCP client needs deterministic public campus intelligence across 13 supported universities, **explicitly delegated private Gapwise context**, or bounded personal actions. +Use Gapwise AI when a compatible remote MCP client needs deterministic public campus intelligence across 14 supported universities, **explicitly delegated private Gapwise context**, or bounded personal actions. - Remote MCP resource: `https://ai.gapwise.ca/api/mcp` - OAuth protected-resource metadata: `https://ai.gapwise.ca/.well-known/oauth-protected-resource` @@ -55,7 +55,7 @@ curl https://api.gapwise.ca/v1/universities curl https://api.gapwise.ca/v1/campuses ``` -Gapwise supports 13 Canadian universities and 15 campus models. Query parameters `university` (default `uoft`) and `campus` (default `utm`) scope building and routing calls. +Gapwise supports 14 Canadian universities and 16 campus models. Query parameters `university` (default `uoft`) and `campus` (default `utm`) scope building and routing calls. ### List campus buildings diff --git a/src/content/docs/sdk/javascript.md b/src/content/docs/sdk/javascript.md index 5eaad65..0b473bb 100644 --- a/src/content/docs/sdk/javascript.md +++ b/src/content/docs/sdk/javascript.md @@ -61,10 +61,10 @@ No API key is required for the public v1 campus surface. Discover all supported institutions across Canada: ```ts -// List all 13 supported universities +// List all 14 supported universities const universities = await gapwise.universities.list(); -// List all 15 supported campus models +// List all 16 supported campus models const campuses = await gapwise.campuses.list(); ```