# lauraevan/xbox architecture

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

- Interactive diagram: https://gitdiagram.com/lauraevan/xbox
- Repository: https://github.com/lauraevan/xbox

## Overview

The repository combines a browser-based Xbox dashboard, a Stratus cloud-session integration, a separate now.gg relay, a Minecraft launcher replica, and an iOS SwiftUI dashboard. The primary workflow is browser users navigating Home/library/search, selecting a catalogue title, then launching it locally or creating and managing a cloud session. Edges below are limited to relationships shown in excerpts or stated in the README; several dashboard subsystems are documented but their source was not sampled.

Main entry points: [`js/app.js`](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/app.js) (App routing and launch), [`js/views.js`](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/views.js) (Dashboard views), [`api/stratus.js`](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/api/stratus.js) (Stratus API gateway), [`js/catalog.js`](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/catalog.js) (Game catalogue)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web dashboard"]
  node_views["Dashboard views<br/>[views.js]"]
  node_app["App routing and launch<br/>[app.js]"]
  node_navigation["Spatial navigation<br/>[nav.js]"]
  node_catalog["Game catalogue<br/>[catalog.js]"]
  node_state["Profiles and settings<br/>[state.js]"]
  node_media["Artwork loading<br/>[media.js]"]
  node_guide["Guide overlay<br/>[guide.js]"]
  node_console["Console features<br/>[console-pages.js]"]
  node_personalization["Personalization<br/>[personalization.js]"]
  node_wallpaper["Wallpaper system"]
  node_browser["Browser game frame"]
end

subgraph group_cloud["Stratus cloud play"]
  node_stratusjs["Cloud catalogue and sessions<br/>[stratus.js]"]
  node_cloudlibrary["Cloud library<br/>[cloud-library.js]"]
  node_backendpass["Cloud integration pass"]
  node_gateway["Stratus API gateway<br/>[stratus.js]"]
  node_stratusapi["Stratus backend API<br/>[api.js]"]
  node_mailproviders["Mail providers"]
end

subgraph group_native["iOS dashboard"]
  node_nativeapp["Native app model"]
  node_dashboard["Native dashboard"]
  node_nativeguide["Native guide<br/>[GuideView.swift]"]
end

subgraph group_extras["Other products"]
  node_nowgg["now.gg relay<br/>[nowgg.js]"]
  node_minecraft["Minecraft launcher UI<br/>[launcher.js]"]
end

node_player(("Dashboard user"))
node_cdn["Catalogue CDN"]
node_localstore[("Browser persistence")]
node_stratusservice["Stratus service"]
node_nowggservice["now.gg upstream"]
node_minecraftuser(("Launcher user"))

node_player -->|"browses"| node_views
node_views -->|"queries titles"| node_catalog
node_views -->|"reads profile"| node_state
node_player -->|"controls"| node_navigation
node_app -->|"routes focus"| node_navigation
node_app -->|"routes views"| node_views
node_app -->|"loads manifest"| node_catalog
node_app -->|"launches game"| node_browser
node_browser -->|"shows game"| node_player
node_catalog -->|"fetches catalogue"| node_cdn
node_media -->|"loads covers"| node_cdn
node_state -->|"persists settings"| node_localstore
node_player -->|"opens guide"| node_guide
node_player -->|"uses features"| node_console
node_personalization -.->|"updates preferences"| node_state
node_wallpaper -->|"stores wallpaper"| node_localstore
node_app -->|"restores wallpaper"| node_wallpaper
node_views -.->|"uses artwork"| node_media
node_player -->|"browses cloud titles"| node_cloudlibrary
node_cloudlibrary -.->|"surfaces licences"| node_stratusjs
node_player -->|"starts session"| node_stratusjs
node_stratusjs -->|"requests sessions"| node_gateway
node_gateway -->|"relays requests"| node_stratusservice
node_stratusapi -->|"uses providers"| node_mailproviders
node_gateway -.->|"forwards upstream"| node_stratusapi
node_nativeapp -->|"presents"| node_dashboard
node_dashboard -->|"renders guide"| node_nativeguide
node_nowgg -->|"proxies requests"| node_nowggservice
node_minecraftuser -.->|"operates launcher"| node_minecraft

click node_views "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/views.js"
click node_app "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/app.js"
click node_navigation "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/nav.js"
click node_catalog "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/catalog.js"
click node_state "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/state.js"
click node_media "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/media.js"
click node_guide "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/guide.js"
click node_console "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/console-pages.js"
click node_personalization "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/personalization.js"
click node_wallpaper "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/wallpaper-system.js"
click node_stratusjs "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/stratus.js"
click node_cloudlibrary "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/cloud-library.js"
click node_backendpass "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/stratus-backend-pass.js"
click node_gateway "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/api/stratus.js"
click node_stratusapi "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/stratus/api/api.js"
click node_mailproviders "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/stratus/api/mail-providers%205.js"
click node_nativeapp "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/ios/XboxNative/Sources/XboxNative/XboxNativeApp.swift"
click node_dashboard "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/ios/XboxNative/Sources/XboxNative/DashboardView.swift"
click node_nativeguide "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/ios/XboxNative/Sources/XboxNative/GuideView.swift"
click node_nowgg "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/api/nowgg.js"
click node_minecraft "https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/games/minecraft-launcher/js/launcher.js"

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_views,node_app,node_navigation,node_catalog,node_state,node_media,node_guide,node_console,node_personalization,node_wallpaper,node_browser,node_player,node_minecraftuser toneBlue
class node_stratusjs,node_cloudlibrary,node_backendpass,node_gateway,node_stratusapi,node_mailproviders,node_localstore toneAmber
class node_nativeapp,node_dashboard,node_nativeguide toneMint
class node_nowgg,node_minecraft toneRose
class node_cdn,node_stratusservice,node_nowggservice toneIndigo
```

## Components

### Web dashboard

- [Dashboard views](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/views.js): `js/views.js`
- [App routing and launch](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/app.js): `js/app.js`
- [Spatial navigation](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/nav.js): `js/nav.js`
- [Game catalogue](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/catalog.js): `js/catalog.js`
- [Profiles and settings](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/state.js): `js/state.js`
- [Artwork loading](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/media.js): `js/media.js`
- [Guide overlay](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/guide.js): `js/guide.js`
- [Console features](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/console-pages.js): `js/console-pages.js`
- [Personalization](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/personalization.js): `js/personalization.js`
- [Wallpaper system](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/wallpaper-system.js): `js/wallpaper-system.js`
- **Browser game frame**

### Stratus cloud play

- [Cloud catalogue and sessions](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/stratus.js): `js/stratus.js`
- [Cloud library](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/cloud-library.js): `js/cloud-library.js`
- [Cloud integration pass](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/js/stratus-backend-pass.js): `js/stratus-backend-pass.js`
- [Stratus API gateway](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/api/stratus.js): `api/stratus.js`
- [Stratus backend API](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/stratus/api/api.js): `stratus/api/api.js`
- [Mail providers](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/stratus/api/mail-providers%205.js): `stratus/api/mail-providers 5.js`

### iOS dashboard

- [Native app model](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/ios/XboxNative/Sources/XboxNative/XboxNativeApp.swift): `ios/XboxNative/Sources/XboxNative/XboxNativeApp.swift`
- [Native dashboard](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/ios/XboxNative/Sources/XboxNative/DashboardView.swift): `ios/XboxNative/Sources/XboxNative/DashboardView.swift`
- [Native guide](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/ios/XboxNative/Sources/XboxNative/GuideView.swift): `ios/XboxNative/Sources/XboxNative/GuideView.swift`

### Other products

- [now.gg relay](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/api/nowgg.js): `api/nowgg.js`
- [Minecraft launcher UI](https://github.com/lauraevan/xbox/blob/claude/xbox-web-replica-v4s0jk/games/minecraft-launcher/js/launcher.js): `games/minecraft-launcher/js/launcher.js`

### Other components

- **Dashboard user**
- **Catalogue CDN**
- **Browser persistence**
- **Stratus service**
- **now.gg upstream**
- **Launcher user**

## Connections

- Dashboard user → Dashboard views: browses
- Dashboard views → Game catalogue: queries titles (evidence: `js/views.js`)
- Dashboard views → Profiles and settings: reads profile (evidence: `js/views.js`)
- Dashboard user → Spatial navigation: controls
- App routing and launch → Spatial navigation: routes focus (evidence: `js/app.js`)
- App routing and launch → Dashboard views: routes views (evidence: `js/app.js`)
- App routing and launch → Game catalogue: loads manifest (evidence: `js/app.js`)
- App routing and launch → Browser game frame: launches game (evidence: `js/app.js`)
- Browser game frame → Dashboard user: shows game
- Game catalogue → Catalogue CDN: fetches catalogue
- Artwork loading → Catalogue CDN: loads covers
- Profiles and settings → Browser persistence: persists settings
- Dashboard user → Guide overlay: opens guide
- Dashboard user → Console features: uses features
- Personalization → Profiles and settings: updates preferences
- Wallpaper system → Browser persistence: stores wallpaper
- App routing and launch → Wallpaper system: restores wallpaper (evidence: `js/app.js`)
- Dashboard views → Artwork loading: uses artwork
- Dashboard user → Cloud library: browses cloud titles
- Cloud library → Cloud catalogue and sessions: surfaces licences
- Dashboard user → Cloud catalogue and sessions: starts session
- Cloud catalogue and sessions → Stratus API gateway: requests sessions
- Stratus API gateway → Stratus service: relays requests
- Stratus backend API → Mail providers: uses providers (evidence: `stratus/api/api.js`)
- Stratus API gateway → Stratus backend API: forwards upstream
- Native app model → Native dashboard: presents (evidence: `ios/XboxNative/Sources/XboxNative/XboxNativeApp.swift`)
- Native dashboard → Native guide: renders guide (evidence: `ios/XboxNative/Sources/XboxNative/DashboardView.swift`)
- now.gg relay → now.gg upstream: proxies requests (evidence: `api/nowgg.js`)
- Launcher user → Minecraft launcher UI: operates launcher
