# rpimeekle/ha-apps architecture

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

- Interactive diagram: https://gitdiagram.com/rpimeekle/ha-apps
- Repository: https://github.com/rpimeekle/ha-apps

## Overview

This repository packages four lightweight self-hosted tools as Home Assistant apps. The documented user journey is to add the repository, choose an app in the App Store, then install and start it. The apps provide a DokuWiki wiki, an ELOG logbook, a Mainsail interface for Klipper via Moonraker, and a TrueNAS interface in the sidebar. The source excerpts show DokuWiki’s ingress and first-run glue and TrueNAS’s ingress URL shim; other app internals were not sampled, so their runtime details are intentionally omitted.

Main entry points: [`truenas-proxy`](https://github.com/rpimeekle/ha-apps/tree/main/truenas-proxy) (TrueNAS interface), [`README.md`](https://github.com/rpimeekle/ha-apps/blob/main/README.md) (App repository), [`dokuwiki`](https://github.com/rpimeekle/ha-apps/tree/main/dokuwiki) (DokuWiki wiki), [`mainsail-proxy`](https://github.com/rpimeekle/ha-apps/tree/main/mainsail-proxy) (Mainsail interface)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_catalog["App catalog"]
  node_store["Home Assistant App Store"]
  node_repo["App repository<br/>[README.md]"]
end

subgraph group_wiki["DokuWiki"]
  node_dokuwiki["DokuWiki wiki"]
  node_preload["Ingress and setup glue<br/>[preload.php]"]
end

subgraph group_logbook["ELOG"]
  node_elog["ELOG logbook"]
end

subgraph group_interfaces["Web interfaces"]
  node_mainsail["Mainsail interface"]
  node_truenas["TrueNAS interface"]
  node_shim["Ingress URL shim<br/>[shim.js]"]
end

node_user(("Home Assistant user"))
node_moonraker["Moonraker"]
node_truenas_ui["TrueNAS UI"]

node_user -->|"browses apps"| node_store
node_user -->|"adds repository"| node_repo
node_repo -->|"lists apps"| node_store
node_store -->|"offers app"| node_dokuwiki
node_store -->|"offers app"| node_elog
node_store -->|"offers app"| node_mainsail
node_store -->|"offers app"| node_truenas
node_dokuwiki -->|"includes glue"| node_preload
node_mainsail -->|"interfaces via"| node_moonraker
node_truenas -->|"presents interface"| node_truenas_ui
node_truenas -->|"uses ingress shim"| node_shim

click node_repo "https://github.com/rpimeekle/ha-apps/blob/main/README.md"
click node_dokuwiki "https://github.com/rpimeekle/ha-apps/tree/main/dokuwiki"
click node_preload "https://github.com/rpimeekle/ha-apps/blob/main/dokuwiki/rootfs/var/www/dokuwiki/inc/preload.php"
click node_elog "https://github.com/rpimeekle/ha-apps/tree/main/elog"
click node_mainsail "https://github.com/rpimeekle/ha-apps/tree/main/mainsail-proxy"
click node_truenas "https://github.com/rpimeekle/ha-apps/tree/main/truenas-proxy"
click node_shim "https://github.com/rpimeekle/ha-apps/blob/main/truenas-proxy/rootfs/usr/share/ha-ingress/shim.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_store,node_repo,node_user,node_truenas_ui toneBlue
class node_dokuwiki,node_preload toneAmber
class node_elog toneMint
class node_mainsail,node_truenas,node_shim toneRose
class node_moonraker toneIndigo
```

## Components

### App catalog

- **Home Assistant App Store**
- [App repository](https://github.com/rpimeekle/ha-apps/blob/main/README.md): `README.md`

### DokuWiki

- [DokuWiki wiki](https://github.com/rpimeekle/ha-apps/tree/main/dokuwiki): `dokuwiki`
- [Ingress and setup glue](https://github.com/rpimeekle/ha-apps/blob/main/dokuwiki/rootfs/var/www/dokuwiki/inc/preload.php): `dokuwiki/rootfs/var/www/dokuwiki/inc/preload.php`

### ELOG

- [ELOG logbook](https://github.com/rpimeekle/ha-apps/tree/main/elog): `elog`

### Web interfaces

- [Mainsail interface](https://github.com/rpimeekle/ha-apps/tree/main/mainsail-proxy): `mainsail-proxy`
- [TrueNAS interface](https://github.com/rpimeekle/ha-apps/tree/main/truenas-proxy): `truenas-proxy`
- [Ingress URL shim](https://github.com/rpimeekle/ha-apps/blob/main/truenas-proxy/rootfs/usr/share/ha-ingress/shim.js): `truenas-proxy/rootfs/usr/share/ha-ingress/shim.js`

### Other components

- **Home Assistant user**
- **Moonraker**
- **TrueNAS UI**

## Connections

- Home Assistant user → Home Assistant App Store: browses apps (evidence: `README.md`)
- Home Assistant user → App repository: adds repository (evidence: `README.md`)
- App repository → Home Assistant App Store: lists apps (evidence: `README.md`)
- Home Assistant App Store → DokuWiki wiki: offers app (evidence: `README.md`)
- Home Assistant App Store → ELOG logbook: offers app (evidence: `README.md`)
- Home Assistant App Store → Mainsail interface: offers app (evidence: `README.md`)
- Home Assistant App Store → TrueNAS interface: offers app (evidence: `README.md`)
- DokuWiki wiki → Ingress and setup glue: includes glue (evidence: `dokuwiki/rootfs/var/www/dokuwiki/inc/preload.php`)
- Mainsail interface → Moonraker: interfaces via (evidence: `README.md`)
- TrueNAS interface → TrueNAS UI: presents interface (evidence: `README.md`)
- TrueNAS interface → Ingress URL shim: uses ingress shim (evidence: `truenas-proxy/rootfs/usr/share/ha-ingress/shim.js`)
