# novix-mb/novix architecture

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

- Interactive diagram: https://gitdiagram.com/novix-mb/novix
- Repository: https://github.com/novix-mb/novix

## Overview

NOVIX is a bilingual, local-first study workspace. The documented user journey starts at Home, which links to study areas including the library, task list, notes, timetable, focus timer, and smart board; users can then read and annotate books, plan, or focus with sounds and backgrounds. Settings and the coming-soon simulations are additional capabilities. Only the service worker source was excerpted, so UI implementation links are based on README statements rather than inspected code; unverified wiring is omitted.

Main entry points: [`index.html`](https://github.com/novix-mb/novix/blob/main/index.html) (Home), [`assets/js/app.js`](https://github.com/novix-mb/novix/blob/main/assets/js/app.js) (Focus timer), [`sw.js`](https://github.com/novix-mb/novix/blob/main/sw.js) (Service worker), [`assets/js/reader-v2.js`](https://github.com/novix-mb/novix/blob/main/assets/js/reader-v2.js) (PDF library)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workspace["Study workspace"]
  node_home["Home<br/>[index.html]"]
  node_library["PDF library<br/>[reader-v2.js]"]
  node_annotations["Page annotations<br/>[reader-v2.js]"]
  node_board["Smart board<br/>[index.html]"]
  node_simulations["Simulations<br/>[index.html]"]
  node_settings["Settings<br/>[app.js]"]
  node_local_data[("On-device data")]
end

subgraph group_planning["Planning tools"]
  node_tasks["Tasks<br/>[app.js]"]
  node_notes["Notes<br/>[app.js]"]
  node_timetable["Timetable<br/>[app.js]"]
end

subgraph group_focus["Focus experience"]
  node_timer["Focus timer<br/>[app.js]"]
  node_focus_backgrounds["Focus backgrounds<br/>[focus-bg.js]"]
  node_focus_audio["Focus audio<br/>[app.js]"]
end

subgraph group_platform["Offline support"]
  node_service_worker["Service worker<br/>[sw.js]"]
  node_cache_storage[("Cache Storage")]
end

node_user(("Student"))
node_fonts["Google Fonts"]

node_user -->|"opens"| node_home
node_home -->|"links to"| node_library
node_home -->|"links to"| node_tasks
node_home -->|"links to"| node_notes
node_home -->|"links to"| node_timetable
node_home -->|"links to"| node_timer
node_home -->|"links to"| node_board
node_home -->|"links to"| node_simulations
node_library -->|"supports"| node_annotations
node_timer -->|"offers"| node_focus_backgrounds
node_timer -->|"plays"| node_focus_audio
node_home -->|"shows today's"| node_tasks
node_user -->|"customizes"| node_settings
node_home -->|"keeps study data"| node_local_data
node_service_worker -->|"reads and writes"| node_cache_storage
node_service_worker -->|"caches responses"| node_fonts

click node_home "https://github.com/novix-mb/novix/blob/main/index.html"
click node_library "https://github.com/novix-mb/novix/blob/main/assets/js/reader-v2.js"
click node_annotations "https://github.com/novix-mb/novix/blob/main/assets/js/reader-v2.js"
click node_board "https://github.com/novix-mb/novix/blob/main/index.html"
click node_simulations "https://github.com/novix-mb/novix/blob/main/index.html"
click node_tasks "https://github.com/novix-mb/novix/blob/main/assets/js/app.js"
click node_notes "https://github.com/novix-mb/novix/blob/main/assets/js/app.js"
click node_timetable "https://github.com/novix-mb/novix/blob/main/assets/js/app.js"
click node_timer "https://github.com/novix-mb/novix/blob/main/assets/js/app.js"
click node_focus_backgrounds "https://github.com/novix-mb/novix/blob/main/assets/js/focus-bg.js"
click node_focus_audio "https://github.com/novix-mb/novix/blob/main/assets/js/app.js"
click node_settings "https://github.com/novix-mb/novix/blob/main/assets/js/app.js"
click node_service_worker "https://github.com/novix-mb/novix/blob/main/sw.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_home,node_library,node_annotations,node_board,node_simulations,node_settings,node_local_data toneBlue
class node_tasks,node_notes,node_timetable toneAmber
class node_timer,node_focus_backgrounds,node_focus_audio toneMint
class node_service_worker,node_cache_storage toneRose
class node_user,node_fonts toneIndigo
```

## Components

### Study workspace

- [Home](https://github.com/novix-mb/novix/blob/main/index.html): `index.html`
- [PDF library](https://github.com/novix-mb/novix/blob/main/assets/js/reader-v2.js): `assets/js/reader-v2.js`
- [Page annotations](https://github.com/novix-mb/novix/blob/main/assets/js/reader-v2.js): `assets/js/reader-v2.js`
- [Smart board](https://github.com/novix-mb/novix/blob/main/index.html): `index.html`
- [Simulations](https://github.com/novix-mb/novix/blob/main/index.html): `index.html`
- [Settings](https://github.com/novix-mb/novix/blob/main/assets/js/app.js): `assets/js/app.js`
- **On-device data**

### Planning tools

- [Tasks](https://github.com/novix-mb/novix/blob/main/assets/js/app.js): `assets/js/app.js`
- [Notes](https://github.com/novix-mb/novix/blob/main/assets/js/app.js): `assets/js/app.js`
- [Timetable](https://github.com/novix-mb/novix/blob/main/assets/js/app.js): `assets/js/app.js`

### Focus experience

- [Focus timer](https://github.com/novix-mb/novix/blob/main/assets/js/app.js): `assets/js/app.js`
- [Focus backgrounds](https://github.com/novix-mb/novix/blob/main/assets/js/focus-bg.js): `assets/js/focus-bg.js`
- [Focus audio](https://github.com/novix-mb/novix/blob/main/assets/js/app.js): `assets/js/app.js`

### Offline support

- [Service worker](https://github.com/novix-mb/novix/blob/main/sw.js): `sw.js`
- **Cache Storage**

### Other components

- **Student**
- **Google Fonts**

## Connections

- Student → Home: opens (evidence: `README.md`)
- Home → PDF library: links to (evidence: `README.md`)
- Home → Tasks: links to (evidence: `README.md`)
- Home → Notes: links to (evidence: `README.md`)
- Home → Timetable: links to (evidence: `README.md`)
- Home → Focus timer: links to (evidence: `README.md`)
- Home → Smart board: links to (evidence: `README.md`)
- Home → Simulations: links to (evidence: `README.md`)
- PDF library → Page annotations: supports (evidence: `README.md`)
- Focus timer → Focus backgrounds: offers (evidence: `README.md`)
- Focus timer → Focus audio: plays (evidence: `README.md`)
- Home → Tasks: shows today's (evidence: `README.md`)
- Student → Settings: customizes (evidence: `README.md`)
- Home → On-device data: keeps study data (evidence: `README.md`)
- Service worker → Cache Storage: reads and writes (evidence: `sw.js`)
- Service worker → Google Fonts: caches responses (evidence: `sw.js`)
