# octadira/vertiwiki architecture

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

- Interactive diagram: https://gitdiagram.com/octadira/vertiwiki
- Repository: https://github.com/octadira/vertiwiki

## Overview

VertiWiki is a browser-side Markdown wiki and documentation engine: a reader navigates to a page, the application fetches its Markdown, parses and renders it, and adds navigation and page features. The graph also preserves documented capabilities such as localization, layouts, themes, search, SEO, and rich Markdown plugins. Edges follow the sampled calls and explicit README behavior; wiring for unsampled features is intentionally left out.

Main entry points: [`src/main.ts`](https://github.com/octadira/vertiwiki/blob/main/src/main.ts) (Application runtime), [`src/core/router.ts`](https://github.com/octadira/vertiwiki/blob/main/src/core/router.ts) (Routing and i18n), [`src/plugins/search.ts`](https://github.com/octadira/vertiwiki/blob/main/src/plugins/search.ts) (Full-text search), [`src/ui/layout.ts`](https://github.com/octadira/vertiwiki/blob/main/src/ui/layout.ts) (Page layout)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Runtime and Routing"]
  node_main["Application runtime<br/>[main.ts]"]
  node_config["Configuration<br/>[config.ts]"]
  node_router["Routing and i18n<br/>[router.ts]"]
end

subgraph group_content["Content Processing"]
  node_parser["Markdown parser<br/>[parser.ts]"]
  node_pipeline["Plugin pipeline<br/>[pipeline.ts]"]
end

subgraph group_interface["Reader Interface"]
  node_layout["Page layout<br/>[layout.ts]"]
  node_searchmodal["Search dialog<br/>[search-modal.ts]"]
  node_toc["Table of contents<br/>[toc.ts]"]
  node_language["Language chooser"]
  node_prevnext["Page navigation<br/>[prev-next.ts]"]
end

subgraph group_features["Documentation Features"]
  node_search["Full-text search<br/>[search.ts]"]
  node_wikilinks["Wikilinks<br/>[wikilinks.ts]"]
  node_math["Math rendering<br/>[math.ts]"]
  node_mermaid["Diagram rendering<br/>[mermaid.ts]"]
  node_richmarkdown["Markdown enhancements"]
  node_sitemap["Sitemap and navigation<br/>[sitemap.ts]"]
  node_aeo["SEO and AEO<br/>[aeo.ts]"]
  node_analytics["Analytics<br/>[analytics.ts]"]
end

subgraph group_presentation["Themes and Metadata"]
  node_theme["Theme manager<br/>[theme.ts]"]
  node_presets["Theme presets<br/>[presets.ts]"]
  node_styles["Visual styles<br/>[main.css]"]
end

node_reader(("Reader"))
node_markdown["Markdown files"]

node_reader -->|"selects page"| node_router
node_router -->|"dispatches route"| node_main
node_main -->|"loads settings"| node_config
node_main -->|"fetches pages"| node_markdown
node_markdown -->|"provides text"| node_main
node_main -->|"parses Markdown"| node_parser
node_main -->|"renders interface"| node_layout
node_main -->|"sets up theme"| node_theme
node_main -->|"creates engine"| node_search
node_main -->|"opens search"| node_searchmodal
node_searchmodal -->|"queries"| node_search
node_search -->|"resolves resources"| node_router
node_main -->|"updates metadata"| node_aeo
node_theme -->|"uses presets"| node_presets
node_layout -->|"applies styles"| node_styles

click node_main "https://github.com/octadira/vertiwiki/blob/main/src/main.ts"
click node_config "https://github.com/octadira/vertiwiki/blob/main/src/core/config.ts"
click node_router "https://github.com/octadira/vertiwiki/blob/main/src/core/router.ts"
click node_parser "https://github.com/octadira/vertiwiki/blob/main/src/core/parser.ts"
click node_pipeline "https://github.com/octadira/vertiwiki/blob/main/src/core/pipeline.ts"
click node_layout "https://github.com/octadira/vertiwiki/blob/main/src/ui/layout.ts"
click node_searchmodal "https://github.com/octadira/vertiwiki/blob/main/src/ui/search-modal.ts"
click node_toc "https://github.com/octadira/vertiwiki/blob/main/src/ui/toc.ts"
click node_language "https://github.com/octadira/vertiwiki/blob/main/src/ui/language-chooser.ts"
click node_prevnext "https://github.com/octadira/vertiwiki/blob/main/src/ui/prev-next.ts"
click node_search "https://github.com/octadira/vertiwiki/blob/main/src/plugins/search.ts"
click node_wikilinks "https://github.com/octadira/vertiwiki/blob/main/src/plugins/wikilinks.ts"
click node_math "https://github.com/octadira/vertiwiki/blob/main/src/plugins/math.ts"
click node_mermaid "https://github.com/octadira/vertiwiki/blob/main/src/plugins/mermaid.ts"
click node_richmarkdown "https://github.com/octadira/vertiwiki/tree/main/src/plugins"
click node_sitemap "https://github.com/octadira/vertiwiki/blob/main/src/plugins/sitemap.ts"
click node_aeo "https://github.com/octadira/vertiwiki/blob/main/src/plugins/aeo.ts"
click node_analytics "https://github.com/octadira/vertiwiki/blob/main/src/plugins/analytics.ts"
click node_theme "https://github.com/octadira/vertiwiki/blob/main/src/ui/theme.ts"
click node_presets "https://github.com/octadira/vertiwiki/blob/main/src/ui/themes/presets.ts"
click node_styles "https://github.com/octadira/vertiwiki/blob/main/src/ui/styles/main.css"

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_main,node_config,node_router toneBlue
class node_parser,node_pipeline toneAmber
class node_layout,node_searchmodal,node_toc,node_language,node_prevnext toneMint
class node_search,node_wikilinks,node_math,node_mermaid,node_richmarkdown,node_sitemap,node_aeo,node_analytics toneRose
class node_theme,node_presets,node_styles,node_reader,node_markdown toneIndigo
```

## Components

### Runtime and Routing

- [Application runtime](https://github.com/octadira/vertiwiki/blob/main/src/main.ts): `src/main.ts`
- [Configuration](https://github.com/octadira/vertiwiki/blob/main/src/core/config.ts): `src/core/config.ts`
- [Routing and i18n](https://github.com/octadira/vertiwiki/blob/main/src/core/router.ts): `src/core/router.ts`

### Content Processing

- [Markdown parser](https://github.com/octadira/vertiwiki/blob/main/src/core/parser.ts): `src/core/parser.ts`
- [Plugin pipeline](https://github.com/octadira/vertiwiki/blob/main/src/core/pipeline.ts): `src/core/pipeline.ts`

### Reader Interface

- [Page layout](https://github.com/octadira/vertiwiki/blob/main/src/ui/layout.ts): `src/ui/layout.ts`
- [Search dialog](https://github.com/octadira/vertiwiki/blob/main/src/ui/search-modal.ts): `src/ui/search-modal.ts`
- [Table of contents](https://github.com/octadira/vertiwiki/blob/main/src/ui/toc.ts): `src/ui/toc.ts`
- [Language chooser](https://github.com/octadira/vertiwiki/blob/main/src/ui/language-chooser.ts): `src/ui/language-chooser.ts`
- [Page navigation](https://github.com/octadira/vertiwiki/blob/main/src/ui/prev-next.ts): `src/ui/prev-next.ts`

### Documentation Features

- [Full-text search](https://github.com/octadira/vertiwiki/blob/main/src/plugins/search.ts): `src/plugins/search.ts`
- [Wikilinks](https://github.com/octadira/vertiwiki/blob/main/src/plugins/wikilinks.ts): `src/plugins/wikilinks.ts`
- [Math rendering](https://github.com/octadira/vertiwiki/blob/main/src/plugins/math.ts): `src/plugins/math.ts`
- [Diagram rendering](https://github.com/octadira/vertiwiki/blob/main/src/plugins/mermaid.ts): `src/plugins/mermaid.ts`
- [Markdown enhancements](https://github.com/octadira/vertiwiki/tree/main/src/plugins): `src/plugins`
- [Sitemap and navigation](https://github.com/octadira/vertiwiki/blob/main/src/plugins/sitemap.ts): `src/plugins/sitemap.ts`
- [SEO and AEO](https://github.com/octadira/vertiwiki/blob/main/src/plugins/aeo.ts): `src/plugins/aeo.ts`
- [Analytics](https://github.com/octadira/vertiwiki/blob/main/src/plugins/analytics.ts): `src/plugins/analytics.ts`

### Themes and Metadata

- [Theme manager](https://github.com/octadira/vertiwiki/blob/main/src/ui/theme.ts): `src/ui/theme.ts`
- [Theme presets](https://github.com/octadira/vertiwiki/blob/main/src/ui/themes/presets.ts): `src/ui/themes/presets.ts`
- [Visual styles](https://github.com/octadira/vertiwiki/blob/main/src/ui/styles/main.css): `src/ui/styles/main.css`

### Other components

- **Reader**
- **Markdown files**

## Connections

- Reader → Routing and i18n: selects page
- Routing and i18n → Application runtime: dispatches route
- Application runtime → Configuration: loads settings
- Application runtime → Markdown files: fetches pages
- Markdown files → Application runtime: provides text
- Application runtime → Markdown parser: parses Markdown
- Application runtime → Page layout: renders interface
- Application runtime → Theme manager: sets up theme
- Application runtime → Full-text search: creates engine
- Application runtime → Search dialog: opens search
- Search dialog → Full-text search: queries
- Full-text search → Routing and i18n: resolves resources
- Application runtime → SEO and AEO: updates metadata
- Theme manager → Theme presets: uses presets
- Page layout → Visual styles: applies styles
