# mrknoir/lifequest-app architecture

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

- Interactive diagram: https://gitdiagram.com/mrknoir/lifequest-app
- Repository: https://github.com/mrknoir/lifequest-app

## Overview

LifeQuest is an offline, browser-based productivity RPG. The principal workflow is to manage and complete scheduled tasks, earn XP and stat progression, and review accountability and progress through dashboards and history. State and inventory persist locally; the app also offers threat and streak mechanics, operational task/routine features, themes, audio feedback, and save-file transfer. The source is a single JavaScript file, so feature nodes share its exact path. Some feature wiring is documented in the README but not visible in the sampled excerpts.

Main entry points: [`js/script.js`](https://github.com/mrknoir/lifequest-app/blob/main/js/script.js) (App Runtime), [`index.html`](https://github.com/mrknoir/lifequest-app/blob/main/index.html) (LifeQuest UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["App Experience"]
  node_page["LifeQuest UI<br/>[index.html]"]
  node_runtime["App Runtime<br/>[script.js]"]
  node_dashboard["Dashboard<br/>[script.js]"]
  node_calendar["Calendar History<br/>[script.js]"]
  node_analytics["Telemetry Charts<br/>[script.js]"]
  node_transfer["Save Import Export<br/>[script.js]"]
end

subgraph group_progression["Progression"]
  node_inventory["Cyberware Inventory<br/>[script.js]"]
  node_leveling["XP and Attributes<br/>[script.js]"]
end

subgraph group_operations["Operations"]
  node_tasks["Task Management<br/>[script.js]"]
  node_routines["SOP Codex<br/>[script.js]"]
  node_threat["Threat and Streaks<br/>[script.js]"]
  node_bosses["Black Ice Operations<br/>[script.js]"]
end

subgraph group_platform["Browser Services"]
  node_storage[("localStorage")]
  node_audio["Web Audio API"]
  node_chartjs["Chart.js"]
end

node_user(("Player"))

node_user -->|"uses"| node_page
node_page -->|"loads"| node_runtime
node_runtime -->|"renders"| node_dashboard
node_runtime -->|"renders"| node_calendar
node_runtime -->|"renders"| node_analytics
node_runtime -->|"manages"| node_tasks
node_runtime -->|"manages"| node_routines
node_runtime -->|"evaluates"| node_threat
node_runtime -->|"manages"| node_bosses
node_runtime -->|"manages"| node_inventory
node_runtime -->|"calculates"| node_leveling
node_runtime -->|"handles"| node_transfer
node_runtime -->|"reads and writes"| node_storage
node_runtime -->|"synthesizes"| node_audio
node_runtime -.->|"renders charts"| node_chartjs

click node_page "https://github.com/mrknoir/lifequest-app/blob/main/index.html"
click node_runtime "https://github.com/mrknoir/lifequest-app/blob/main/js/script.js"
click node_dashboard "https://github.com/mrknoir/lifequest-app/blob/main/js/script.js"
click node_calendar "https://github.com/mrknoir/lifequest-app/blob/main/js/script.js"
click node_analytics "https://github.com/mrknoir/lifequest-app/blob/main/js/script.js"
click node_tasks "https://github.com/mrknoir/lifequest-app/blob/main/js/script.js"
click node_routines "https://github.com/mrknoir/lifequest-app/blob/main/js/script.js"
click node_threat "https://github.com/mrknoir/lifequest-app/blob/main/js/script.js"
click node_bosses "https://github.com/mrknoir/lifequest-app/blob/main/js/script.js"
click node_inventory "https://github.com/mrknoir/lifequest-app/blob/main/js/script.js"
click node_leveling "https://github.com/mrknoir/lifequest-app/blob/main/js/script.js"
click node_transfer "https://github.com/mrknoir/lifequest-app/blob/main/js/script.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_page,node_runtime,node_dashboard,node_calendar,node_analytics,node_transfer toneBlue
class node_inventory,node_leveling toneAmber
class node_tasks,node_routines,node_threat,node_bosses toneMint
class node_storage,node_audio,node_chartjs toneRose
class node_user toneIndigo
```

## Components

### App Experience

- [LifeQuest UI](https://github.com/mrknoir/lifequest-app/blob/main/index.html): `index.html`
- [App Runtime](https://github.com/mrknoir/lifequest-app/blob/main/js/script.js): `js/script.js`
- [Dashboard](https://github.com/mrknoir/lifequest-app/blob/main/js/script.js): `js/script.js`
- [Calendar History](https://github.com/mrknoir/lifequest-app/blob/main/js/script.js): `js/script.js`
- [Telemetry Charts](https://github.com/mrknoir/lifequest-app/blob/main/js/script.js): `js/script.js`
- [Save Import Export](https://github.com/mrknoir/lifequest-app/blob/main/js/script.js): `js/script.js`

### Progression

- [Cyberware Inventory](https://github.com/mrknoir/lifequest-app/blob/main/js/script.js): `js/script.js`
- [XP and Attributes](https://github.com/mrknoir/lifequest-app/blob/main/js/script.js): `js/script.js`

### Operations

- [Task Management](https://github.com/mrknoir/lifequest-app/blob/main/js/script.js): `js/script.js`
- [SOP Codex](https://github.com/mrknoir/lifequest-app/blob/main/js/script.js): `js/script.js`
- [Threat and Streaks](https://github.com/mrknoir/lifequest-app/blob/main/js/script.js): `js/script.js`
- [Black Ice Operations](https://github.com/mrknoir/lifequest-app/blob/main/js/script.js): `js/script.js`

### Browser Services

- **localStorage**
- **Web Audio API**
- **Chart.js**

### Other components

- **Player**

## Connections

- Player → LifeQuest UI: uses
- LifeQuest UI → App Runtime: loads
- App Runtime → Dashboard: renders
- App Runtime → Calendar History: renders
- App Runtime → Telemetry Charts: renders
- App Runtime → Task Management: manages
- App Runtime → SOP Codex: manages
- App Runtime → Threat and Streaks: evaluates
- App Runtime → Black Ice Operations: manages
- App Runtime → Cyberware Inventory: manages
- App Runtime → XP and Attributes: calculates
- App Runtime → Save Import Export: handles
- App Runtime → localStorage: reads and writes
- App Runtime → Web Audio API: synthesizes
- App Runtime → Chart.js: renders charts
