# rennefer/h-sv4 architecture

> Architecture diagram of the GitHub repository rennefer/h-sv4, 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/rennefer/h-sv4
- Repository: https://github.com/rennefer/h-sv4

## Overview

Horus and Seth is a static site for browsing a hieratic word list, Gardiner signs, and Egyptian text transcriptions, with additional reading, training, and annotation pages visible in the file tree. The main workflow is opening the home page and navigating to a reference or reading section. It also supports installable, offline-capable use and checks for site updates. The README documents the main sections; sampled source confirms service-worker behavior and navigation sounds, but not the internals or data wiring of the individual pages.

Main entry points: [`index.html`](https://github.com/rennefer/h-sv4/blob/main/index.html) (Home), [`sw.js`](https://github.com/rennefer/h-sv4/blob/main/sw.js) (Service worker), [`dictionary.html`](https://github.com/rennefer/h-sv4/blob/main/dictionary.html) (Dictionary), [`site-update-check.js`](https://github.com/rennefer/h-sv4/blob/main/site-update-check.js) (Update checker)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_browse["Reference browsing"]
  node_home["Home<br/>[index.html]"]
  node_dictionary["Dictionary<br/>[dictionary.html]"]
  node_signlist["Sign list<br/>[sign-list.html]"]
end

subgraph group_texts["Texts and study"]
  node_wenamun["Wenamun<br/>[wenamun.html]"]
  node_horus["Horus and Seth"]
  node_ateniit["Ateniit<br/>[ateniit.html]"]
  node_steamdeck["Steam Deck controls"]
  node_annotator["Wenamun annotator"]
  node_training["Training data<br/>[training-data.html]"]
  node_playbook["Playbook<br/>[playbook.html]"]
  node_two_brothers["Two Brothers<br/>[two-brothers.html]"]
end

subgraph group_pwa["App and updates"]
  node_manifest["PWA manifest"]
  node_service_worker["Service worker<br/>[sw.js]"]
  node_cache[("Offline cache")]
  node_version_check["Update checker"]
  node_version["Version marker<br/>[version.json]"]
end

subgraph group_audio["Navigation sounds"]
  node_book_sound["Book opening sound<br/>[book-open.js]"]
  node_ship_sound["Ship creak sound<br/>[ship-creak.js]"]
  node_sign_sound["Sign pling sound<br/>[sign-list-pling.js]"]
  node_chime_sound["Divine chime<br/>[divine-chime.js]"]
end

node_reader(("Site visitor"))
node_network(("Web network"))

node_reader -->|"opens"| node_home
node_home -->|"links to"| node_dictionary
node_home -->|"links to"| node_signlist
node_home -->|"links to"| node_wenamun
node_home -->|"links to"| node_horus
node_service_worker -->|"caches assets"| node_cache
node_service_worker -->|"fetches pages"| node_network
node_network -->|"page response"| node_service_worker
node_service_worker -->|"fallback reads"| node_cache
node_version_check -->|"fetches"| node_version
node_version_check -->|"checks updates"| node_network
node_service_worker -->|"bypasses cache"| node_version
node_reader -->|"opens"| node_dictionary
node_dictionary -->|"plays on load"| node_book_sound
node_reader -->|"selects sign list"| node_home
node_home -->|"plays before navigation"| node_sign_sound
node_home -->|"plays before navigation"| node_ship_sound

click node_home "https://github.com/rennefer/h-sv4/blob/main/index.html"
click node_dictionary "https://github.com/rennefer/h-sv4/blob/main/dictionary.html"
click node_signlist "https://github.com/rennefer/h-sv4/blob/main/sign-list.html"
click node_wenamun "https://github.com/rennefer/h-sv4/blob/main/wenamun.html"
click node_horus "https://github.com/rennefer/h-sv4/blob/main/horus-and-seth.html"
click node_ateniit "https://github.com/rennefer/h-sv4/blob/main/ateniit.html"
click node_steamdeck "https://github.com/rennefer/h-sv4/blob/main/ateniit_steam_deck_controls.html"
click node_annotator "https://github.com/rennefer/h-sv4/blob/main/wenamun_annotator.html"
click node_training "https://github.com/rennefer/h-sv4/blob/main/training-data.html"
click node_playbook "https://github.com/rennefer/h-sv4/blob/main/playbook.html"
click node_two_brothers "https://github.com/rennefer/h-sv4/blob/main/two-brothers.html"
click node_manifest "https://github.com/rennefer/h-sv4/blob/main/manifest.webmanifest"
click node_service_worker "https://github.com/rennefer/h-sv4/blob/main/sw.js"
click node_version_check "https://github.com/rennefer/h-sv4/blob/main/site-update-check.js"
click node_version "https://github.com/rennefer/h-sv4/blob/main/version.json"
click node_book_sound "https://github.com/rennefer/h-sv4/blob/main/book-open.js"
click node_ship_sound "https://github.com/rennefer/h-sv4/blob/main/ship-creak.js"
click node_sign_sound "https://github.com/rennefer/h-sv4/blob/main/sign-list-pling.js"
click node_chime_sound "https://github.com/rennefer/h-sv4/blob/main/divine-chime.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_dictionary,node_signlist toneBlue
class node_wenamun,node_horus,node_ateniit,node_steamdeck,node_annotator,node_training,node_playbook,node_two_brothers toneAmber
class node_manifest,node_service_worker,node_cache,node_version_check,node_version toneMint
class node_book_sound,node_ship_sound,node_sign_sound,node_chime_sound toneRose
class node_reader,node_network toneIndigo
```

## Components

### Reference browsing

- [Home](https://github.com/rennefer/h-sv4/blob/main/index.html): `index.html`
- [Dictionary](https://github.com/rennefer/h-sv4/blob/main/dictionary.html): `dictionary.html`
- [Sign list](https://github.com/rennefer/h-sv4/blob/main/sign-list.html): `sign-list.html`

### Texts and study

- [Wenamun](https://github.com/rennefer/h-sv4/blob/main/wenamun.html): `wenamun.html`
- [Horus and Seth](https://github.com/rennefer/h-sv4/blob/main/horus-and-seth.html): `horus-and-seth.html`
- [Ateniit](https://github.com/rennefer/h-sv4/blob/main/ateniit.html): `ateniit.html`
- [Steam Deck controls](https://github.com/rennefer/h-sv4/blob/main/ateniit_steam_deck_controls.html): `ateniit_steam_deck_controls.html`
- [Wenamun annotator](https://github.com/rennefer/h-sv4/blob/main/wenamun_annotator.html): `wenamun_annotator.html`
- [Training data](https://github.com/rennefer/h-sv4/blob/main/training-data.html): `training-data.html`
- [Playbook](https://github.com/rennefer/h-sv4/blob/main/playbook.html): `playbook.html`
- [Two Brothers](https://github.com/rennefer/h-sv4/blob/main/two-brothers.html): `two-brothers.html`

### App and updates

- [PWA manifest](https://github.com/rennefer/h-sv4/blob/main/manifest.webmanifest): `manifest.webmanifest`
- [Service worker](https://github.com/rennefer/h-sv4/blob/main/sw.js): `sw.js`
- **Offline cache**
- [Update checker](https://github.com/rennefer/h-sv4/blob/main/site-update-check.js): `site-update-check.js`
- [Version marker](https://github.com/rennefer/h-sv4/blob/main/version.json): `version.json`

### Navigation sounds

- [Book opening sound](https://github.com/rennefer/h-sv4/blob/main/book-open.js): `book-open.js`
- [Ship creak sound](https://github.com/rennefer/h-sv4/blob/main/ship-creak.js): `ship-creak.js`
- [Sign pling sound](https://github.com/rennefer/h-sv4/blob/main/sign-list-pling.js): `sign-list-pling.js`
- [Divine chime](https://github.com/rennefer/h-sv4/blob/main/divine-chime.js): `divine-chime.js`

### Other components

- **Site visitor**
- **Web network**

## Connections

- Site visitor → Home: opens
- Home → Dictionary: links to
- Home → Sign list: links to
- Home → Wenamun: links to
- Home → Horus and Seth: links to
- Service worker → Offline cache: caches assets
- Service worker → Web network: fetches pages
- Web network → Service worker: page response
- Service worker → Offline cache: fallback reads
- Update checker → Version marker: fetches
- Update checker → Web network: checks updates
- Service worker → Version marker: bypasses cache
- Site visitor → Dictionary: opens
- Dictionary → Book opening sound: plays on load
- Site visitor → Home: selects sign list
- Home → Sign pling sound: plays before navigation
- Home → Ship creak sound: plays before navigation
