Skip to main content

Venue model

Waylocate maps use a layered architecture so university, mall, airport, and other venue types share one rendering core.

Layers

1. Data plane

  • FloorBundle: geometry, cells, portals, semantics
  • Public campus CDN/API provider chain
  • Indoor pathfinding (pure, no React)
  • Blended indoor + outdoor routing

2. Map host (rendering plane)

  • MapLibre + Three.js custom layer
  • Scene graph, visibility, navigation ribbons
  • Must not import from application-specific code

3. Venue profile (configuration plane)

  • VenueType, VenueProfile: terminology, visualization preset, theme overrides
  • Theme merge chain: default ← profile ← campus extras ← building extras
  • Venue differences flow through profile config + small adapters, not page branches

4. Application shell

One route wires composable hooks and a presentational layout. Venue-specific behavior is driven by profile configuration, not if (venueType === 'mall') branches in the map renderer.

Bundle fields

Campus and building extras can override venue type, preview shell colors, and theme tokens without changing the core schema.

See campus schema for the underlying document structure.