# fractylizer/meta-moist architecture

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

- Interactive diagram: https://gitdiagram.com/fractylizer/meta-moist
- Repository: https://github.com/fractylizer/meta-moist

## Overview

This is a browser-based community wiki. Visitors open a page, search the page catalog, or use navigation controls; the client resolves identifiers and redirects, loads page text, formats its markup, and renders the result. The catalog also supports an alphabetical listing and random-page links, while theme preferences persist in browser storage. The sampled source shows these client-side responsibilities, but not the HTML wiring or full page-content format, so those links are limited to relationships visible in the excerpts.

Main entry points: [`script.js`](https://github.com/fractylizer/meta-moist/blob/main/script.js) (URL and UI handling), [`data.js`](https://github.com/fractylizer/meta-moist/blob/main/data.js) (Page catalog), [`pages`](https://github.com/fractylizer/meta-moist/tree/main/pages) (Page text files)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_navigation["Navigation and discovery"]
  node_client["URL and UI handling<br/>[script.js]"]
  node_page_resolution["Page resolution<br/>[script.js]"]
  node_redirects["Page redirects<br/>[script.js]"]
  node_search["Page search<br/>[script.js]"]
  node_all_pages["Alphabetical listing<br/>[script.js]"]
  node_random["Random page link<br/>[script.js]"]
end

subgraph group_content["Wiki content"]
  node_catalog["Page catalog<br/>[data.js]"]
  node_page_text["Page text files"]
  node_markup["Markup formatting<br/>[script.js]"]
  node_page_render["Page rendering<br/>[script.js]"]
end

subgraph group_preferences["Appearance preferences"]
  node_theme["Theme selection<br/>[script.js]"]
  node_storage[("Browser local storage")]
end

node_visitor(("Visitor"))
node_document["Browser document"]

node_visitor -->|"opens or searches"| node_client
node_client -->|"routes page requests"| node_page_resolution
node_client -->|"routes search requests"| node_search
node_page_resolution -->|"looks up pages"| node_catalog
node_page_resolution -->|"follows redirects"| node_redirects
node_page_resolution -->|"checks and fetches text"| node_page_text
node_page_resolution -->|"formats fetched text"| node_markup
node_markup -->|"produces page content"| node_page_render
node_page_render -->|"appends content"| node_document
node_search -->|"matches titles and IDs"| node_catalog
node_search -->|"appends results"| node_document
node_client -->|"opens page listing"| node_all_pages
node_all_pages -->|"lists page entries"| node_catalog
node_all_pages -->|"appends listing"| node_document
node_client -->|"requests random link"| node_random
node_random -->|"selects page ID"| node_catalog
node_client -->|"initializes theme"| node_theme
node_theme -->|"loads and saves choice"| node_storage
node_theme -->|"sets CSS variables"| node_document

click node_client "https://github.com/fractylizer/meta-moist/blob/main/script.js"
click node_catalog "https://github.com/fractylizer/meta-moist/blob/main/data.js"
click node_page_resolution "https://github.com/fractylizer/meta-moist/blob/main/script.js"
click node_redirects "https://github.com/fractylizer/meta-moist/blob/main/script.js"
click node_page_text "https://github.com/fractylizer/meta-moist/tree/main/pages"
click node_markup "https://github.com/fractylizer/meta-moist/blob/main/script.js"
click node_page_render "https://github.com/fractylizer/meta-moist/blob/main/script.js"
click node_search "https://github.com/fractylizer/meta-moist/blob/main/script.js"
click node_all_pages "https://github.com/fractylizer/meta-moist/blob/main/script.js"
click node_random "https://github.com/fractylizer/meta-moist/blob/main/script.js"
click node_theme "https://github.com/fractylizer/meta-moist/blob/main/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_client,node_page_resolution,node_redirects,node_search,node_all_pages,node_random,node_document toneBlue
class node_catalog,node_page_text,node_markup,node_page_render toneAmber
class node_theme,node_storage toneMint
class node_visitor toneIndigo
```

## Components

### Navigation and discovery

- [URL and UI handling](https://github.com/fractylizer/meta-moist/blob/main/script.js): `script.js`
- [Page resolution](https://github.com/fractylizer/meta-moist/blob/main/script.js): `script.js`
- [Page redirects](https://github.com/fractylizer/meta-moist/blob/main/script.js): `script.js`
- [Page search](https://github.com/fractylizer/meta-moist/blob/main/script.js): `script.js`
- [Alphabetical listing](https://github.com/fractylizer/meta-moist/blob/main/script.js): `script.js`
- [Random page link](https://github.com/fractylizer/meta-moist/blob/main/script.js): `script.js`

### Wiki content

- [Page catalog](https://github.com/fractylizer/meta-moist/blob/main/data.js): `data.js`
- [Page text files](https://github.com/fractylizer/meta-moist/tree/main/pages): `pages`
- [Markup formatting](https://github.com/fractylizer/meta-moist/blob/main/script.js): `script.js`
- [Page rendering](https://github.com/fractylizer/meta-moist/blob/main/script.js): `script.js`

### Appearance preferences

- [Theme selection](https://github.com/fractylizer/meta-moist/blob/main/script.js): `script.js`
- **Browser local storage**

### Other components

- **Visitor**
- **Browser document**

## Connections

- Visitor → URL and UI handling: opens or searches (evidence: `script.js`)
- URL and UI handling → Page resolution: routes page requests (evidence: `script.js`)
- URL and UI handling → Page search: routes search requests (evidence: `script.js`)
- Page resolution → Page catalog: looks up pages (evidence: `script.js`)
- Page resolution → Page redirects: follows redirects (evidence: `script.js`)
- Page resolution → Page text files: checks and fetches text (evidence: `script.js`)
- Page resolution → Markup formatting: formats fetched text (evidence: `script.js`)
- Markup formatting → Page rendering: produces page content (evidence: `script.js`)
- Page rendering → Browser document: appends content (evidence: `script.js`)
- Page search → Page catalog: matches titles and IDs (evidence: `script.js`)
- Page search → Browser document: appends results (evidence: `script.js`)
- URL and UI handling → Alphabetical listing: opens page listing (evidence: `script.js`)
- Alphabetical listing → Page catalog: lists page entries (evidence: `script.js`)
- Alphabetical listing → Browser document: appends listing (evidence: `script.js`)
- URL and UI handling → Random page link: requests random link (evidence: `script.js`)
- Random page link → Page catalog: selects page ID (evidence: `script.js`)
- URL and UI handling → Theme selection: initializes theme (evidence: `script.js`)
- Theme selection → Browser local storage: loads and saves choice (evidence: `script.js`)
- Theme selection → Browser document: sets CSS variables (evidence: `script.js`)
