# illuminarchie66/mario-map-project-v2 architecture

> Architecture diagram of the GitHub repository illuminarchie66/mario-map-project-v2, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/illuminarchie66/mario-map-project-v2
- Repository: https://github.com/illuminarchie66/mario-map-project-v2

## Overview

Mario Map Project is an interactive geography browser for exploring maps and locations in the Mario universe. The main workflow reads the requested map and view from the URL, loads the map and its waypoints, and presents map controls and location content through a responsive UI. The README documents model, image, plan, and tile maps, plus popup, pamphlet, and document waypoint displays. The graph captures these documented capabilities; some subsystem wiring is based on the README because its implementation was not sampled.

Main entry points: [`src/ts/ui/panels/PanelManager.ts`](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/panels/PanelManager.ts) (Panel manager), [`src/ts/map/MapManager.ts`](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/MapManager.ts) (Map manager), [`src/ts/ui/UIManager.ts`](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/UIManager.ts) (UI manager), [`src/ts/core/EventBus.ts`](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/core/EventBus.ts) (Event bus)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_startup["Application startup"]
  node_main["App entry<br/>[main.ts]"]
  node_events["Event bus<br/>[EventBus.ts]"]
end

subgraph group_mapping["Maps and waypoints"]
  node_mapmanager["Map manager<br/>[MapManager.ts]"]
  node_registry["Map registry<br/>[MapRegistry.ts]"]
  node_mapconfig["Map config<br/>[MapConfig.ts]"]
  node_factory["Map factory<br/>[CreateMap.ts]"]
  node_modelmap["Model maps<br/>[ModelMap.ts]"]
  node_imagemap["Image maps<br/>[ImageMap.ts]"]
  node_planmap["Plan maps<br/>[PlanMap.ts]"]
  node_tilemap["Tile maps<br/>[TileMap.ts]"]
  node_globe["3D globe<br/>[Globe3D.ts]"]
  node_loader["Data loader<br/>[Loader.ts]"]
  node_waypoints["Waypoint manager<br/>[WaypointManager.ts]"]
  node_icons["Icon registry<br/>[IconRegistry.ts]"]
end

subgraph group_interface["Navigation and panels"]
  node_ui["UI manager<br/>[UIManager.ts]"]
  node_navbar["Navigation bar<br/>[NavBar.ts]"]
  node_panels["Panel manager<br/>[PanelManager.ts]"]
  node_selector["Map selector<br/>[MapSelector.ts]"]
  node_settings["Settings panel<br/>[Settings.ts]"]
  node_toggles["Map toggles<br/>[Toggles.ts]"]
  node_attribution["Attribution panel<br/>[Attribution.ts]"]
  node_coordinates["Coordinate display<br/>[CoordDisplay.ts]"]
end

subgraph group_content["Waypoint content"]
  node_display["Waypoint display"]
  node_popup["Popup display<br/>[PopupManager.ts]"]
  node_pamphlet["Pamphlet display<br/>[PamphletManager.ts]"]
  node_document["Document display<br/>[DocManager.ts]"]
  node_renderer["Content renderer"]
end

node_visitor(("Visitor"))

node_visitor -->|"opens app"| node_main
node_main -->|"checks map ID"| node_registry
node_main -->|"initializes UI"| node_ui
node_main -->|"starts map load"| node_mapmanager
node_mapmanager -->|"listens for load"| node_events
node_mapmanager -->|"emits loaded"| node_events
node_mapmanager -->|"gets config"| node_registry
node_registry -->|"provides config"| node_mapconfig
node_mapmanager -->|"creates map"| node_factory
node_factory -->|"creates model"| node_modelmap
node_factory -->|"creates image"| node_imagemap
node_factory -->|"creates plan"| node_planmap
node_factory -->|"creates tile"| node_tilemap
node_modelmap -->|"renders globe"| node_globe
node_mapmanager -->|"loads waypoints"| node_waypoints
node_waypoints -->|"loads waypoint data"| node_loader
node_waypoints -->|"gets marker icons"| node_icons
node_waypoints -->|"emits waypoint click"| node_events
node_ui -->|"manages displays"| node_display
node_ui -->|"manages panels"| node_panels
node_ui -->|"creates navigation"| node_navbar
node_ui -->|"shows coordinates"| node_coordinates
node_ui -->|"handles map loaded"| node_events
node_navbar -->|"opens panels"| node_panels
node_panels -->|"hosts selector"| node_selector
node_panels -->|"hosts settings"| node_settings
node_panels -->|"hosts toggles"| node_toggles
node_panels -->|"hosts attribution"| node_attribution
node_selector -->|"requests map load"| node_events
node_panels -->|"updates on map loaded"| node_events
node_display -->|"handles waypoint click"| node_events
node_display -->|"shows popup"| node_popup
node_display -->|"shows pamphlet"| node_pamphlet
node_display -->|"shows document"| node_document
node_popup -->|"renders content"| node_renderer
node_pamphlet -->|"renders content"| node_renderer
node_document -->|"renders content"| node_renderer

click node_main "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/main.ts"
click node_events "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/core/EventBus.ts"
click node_mapmanager "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/MapManager.ts"
click node_registry "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/MapRegistry.ts"
click node_mapconfig "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/MapConfig.ts"
click node_factory "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/maps/CreateMap.ts"
click node_modelmap "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/maps/ModelMap.ts"
click node_imagemap "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/maps/ImageMap.ts"
click node_planmap "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/maps/PlanMap.ts"
click node_tilemap "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/maps/TileMap.ts"
click node_globe "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/models/Globe3D.ts"
click node_loader "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/core/Loader.ts"
click node_waypoints "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/Waypoints/WaypointManager.ts"
click node_icons "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/Waypoints/IconRegistry.ts"
click node_ui "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/UIManager.ts"
click node_navbar "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/NavBar.ts"
click node_panels "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/panels/PanelManager.ts"
click node_selector "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/panels/MapSelector.ts"
click node_settings "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/panels/Settings.ts"
click node_toggles "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/panels/Toggles.ts"
click node_attribution "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/panels/Attribution.ts"
click node_coordinates "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/modals/CoordDisplay.ts"
click node_display "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/WaypointDisplay/WaypointDisplayManager.ts"
click node_popup "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/WaypointDisplay/PopupManager.ts"
click node_pamphlet "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/WaypointDisplay/PamphletManager.ts"
click node_document "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/WaypointDisplay/DocManager.ts"
click node_renderer "https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/ComponentRenderer.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_events toneBlue
class node_mapmanager,node_registry,node_mapconfig,node_factory,node_modelmap,node_imagemap,node_planmap,node_tilemap,node_globe,node_loader,node_waypoints,node_icons toneAmber
class node_ui,node_navbar,node_panels,node_selector,node_settings,node_toggles,node_attribution,node_coordinates toneMint
class node_display,node_popup,node_pamphlet,node_document,node_renderer toneRose
class node_visitor toneIndigo
```

## Components

### Application startup

- [App entry](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/main.ts): `src/ts/main.ts`
- [Event bus](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/core/EventBus.ts): `src/ts/core/EventBus.ts`

### Maps and waypoints

- [Map manager](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/MapManager.ts): `src/ts/map/MapManager.ts`
- [Map registry](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/MapRegistry.ts): `src/ts/map/MapRegistry.ts`
- [Map config](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/MapConfig.ts): `src/ts/map/MapConfig.ts`
- [Map factory](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/maps/CreateMap.ts): `src/ts/map/maps/CreateMap.ts`
- [Model maps](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/maps/ModelMap.ts): `src/ts/map/maps/ModelMap.ts`
- [Image maps](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/maps/ImageMap.ts): `src/ts/map/maps/ImageMap.ts`
- [Plan maps](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/maps/PlanMap.ts): `src/ts/map/maps/PlanMap.ts`
- [Tile maps](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/maps/TileMap.ts): `src/ts/map/maps/TileMap.ts`
- [3D globe](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/models/Globe3D.ts): `src/ts/map/models/Globe3D.ts`
- [Data loader](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/core/Loader.ts): `src/ts/core/Loader.ts`
- [Waypoint manager](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/Waypoints/WaypointManager.ts): `src/ts/map/Waypoints/WaypointManager.ts`
- [Icon registry](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/map/Waypoints/IconRegistry.ts): `src/ts/map/Waypoints/IconRegistry.ts`

### Navigation and panels

- [UI manager](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/UIManager.ts): `src/ts/ui/UIManager.ts`
- [Navigation bar](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/NavBar.ts): `src/ts/ui/NavBar.ts`
- [Panel manager](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/panels/PanelManager.ts): `src/ts/ui/panels/PanelManager.ts`
- [Map selector](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/panels/MapSelector.ts): `src/ts/ui/panels/MapSelector.ts`
- [Settings panel](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/panels/Settings.ts): `src/ts/ui/panels/Settings.ts`
- [Map toggles](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/panels/Toggles.ts): `src/ts/ui/panels/Toggles.ts`
- [Attribution panel](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/panels/Attribution.ts): `src/ts/ui/panels/Attribution.ts`
- [Coordinate display](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/modals/CoordDisplay.ts): `src/ts/ui/modals/CoordDisplay.ts`

### Waypoint content

- [Waypoint display](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/WaypointDisplay/WaypointDisplayManager.ts): `src/ts/ui/WaypointDisplay/WaypointDisplayManager.ts`
- [Popup display](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/WaypointDisplay/PopupManager.ts): `src/ts/ui/WaypointDisplay/PopupManager.ts`
- [Pamphlet display](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/WaypointDisplay/PamphletManager.ts): `src/ts/ui/WaypointDisplay/PamphletManager.ts`
- [Document display](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/WaypointDisplay/DocManager.ts): `src/ts/ui/WaypointDisplay/DocManager.ts`
- [Content renderer](https://github.com/illuminarchie66/mario-map-project-v2/blob/main/src/ts/ui/ComponentRenderer.ts): `src/ts/ui/ComponentRenderer.ts`

### Other components

- **Visitor**

## Connections

- Visitor → App entry: opens app
- App entry → Map registry: checks map ID
- App entry → UI manager: initializes UI
- App entry → Map manager: starts map load
- Map manager → Event bus: listens for load
- Map manager → Event bus: emits loaded
- Map manager → Map registry: gets config
- Map registry → Map config: provides config
- Map manager → Map factory: creates map
- Map factory → Model maps: creates model
- Map factory → Image maps: creates image
- Map factory → Plan maps: creates plan
- Map factory → Tile maps: creates tile
- Model maps → 3D globe: renders globe
- Map manager → Waypoint manager: loads waypoints
- Waypoint manager → Data loader: loads waypoint data
- Waypoint manager → Icon registry: gets marker icons
- Waypoint manager → Event bus: emits waypoint click
- UI manager → Waypoint display: manages displays
- UI manager → Panel manager: manages panels
- UI manager → Navigation bar: creates navigation
- UI manager → Coordinate display: shows coordinates
- UI manager → Event bus: handles map loaded
- Navigation bar → Panel manager: opens panels
- Panel manager → Map selector: hosts selector
- Panel manager → Settings panel: hosts settings
- Panel manager → Map toggles: hosts toggles
- Panel manager → Attribution panel: hosts attribution
- Map selector → Event bus: requests map load
- Panel manager → Event bus: updates on map loaded
- Waypoint display → Event bus: handles waypoint click
- Waypoint display → Popup display: shows popup
- Waypoint display → Pamphlet display: shows pamphlet
- Waypoint display → Document display: shows document
- Popup display → Content renderer: renders content
- Pamphlet display → Content renderer: renders content
- Document display → Content renderer: renders content
