# darkrai9x/vbook-extensions architecture

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

- Interactive diagram: https://gitdiagram.com/darkrai9x/vbook-extensions
- Repository: https://github.com/darkrai9x/vbook-extensions

## Overview

This repository combines a catalog of vBook extensions with authoring templates and a VS Code tester. The documented extension contract defines discovery, detail, chapter-listing, and content retrieval; extensions also provide optional search, browsing, comments, and related-content features. The tester can run scripts against a vBook server and build or install extensions. Some catalog implementations are present only as ZIP archives, so their internal behavior and wiring are not represented here.

Main entry points: [`vbook-vscode-tester/extension.js`](https://github.com/darkrai9x/vbook-extensions/blob/master/vbook-vscode-tester/extension.js) (Script runner), [`truyenfull/plugin.json`](https://github.com/darkrai9x/vbook-extensions/blob/master/truyenfull/plugin.json) (Novel extensions), [`mangadex/plugin.json`](https://github.com/darkrai9x/vbook-extensions/blob/master/mangadex/plugin.json) (Comic extensions), [`truyentranhaudio/plugin.json`](https://github.com/darkrai9x/vbook-extensions/blob/master/truyentranhaudio/plugin.json) (Audio extensions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_catalog["Extension catalog"]
  node_catalog_meta["Extension metadata<br/>[repository.json]"]
  node_novel_plugins["Novel extensions<br/>[plugin.json]"]
  node_comic_plugins["Comic extensions<br/>[plugin.json]"]
  node_audio_plugins["Audio extensions<br/>[plugin.json]"]
  node_video_plugins["Video extensions<br/>[plugin.json]"]
  node_translation_plugins["Translation extensions<br/>[plugin.json]"]
  node_tts_plugins["Speech extensions<br/>[plugin.json]"]
end

subgraph group_templates["Authoring templates"]
  node_templates_content["Media templates<br/>[templates]"]
end

subgraph group_tester["VS Code tester"]
  node_tester_panel["Tester panel<br/>[extension.js]"]
  node_script_runner["Script runner<br/>[extension.js]"]
  node_legacy_server["Legacy file server<br/>[extension.js]"]
end

subgraph group_protocol["Extension protocol"]
  node_content_listing["Browse and search<br/>[README.md]"]
  node_story_detail["Story details<br/>[README.md]"]
  node_chapter_index["Chapter index<br/>[README.md]"]
  node_chapter_content["Chapter content<br/>[README.md]"]
  node_optional_features["Related and comments<br/>[README.md]"]
  node_media_tools["Translate and TTS<br/>[translate.json]"]
end

node_reader(("vBook reader"))
node_source_site(("Content websites"))
node_tester_user(("Extension author"))
node_vbook_server(("vBook server"))
node_extension_files[("Extension files")]

node_reader -->|"loads catalog"| node_catalog_meta
node_reader -->|"loads extension"| node_novel_plugins
node_reader -->|"loads extension"| node_comic_plugins
node_reader -->|"loads extension"| node_audio_plugins
node_reader -->|"loads extension"| node_video_plugins
node_reader -->|"loads extension"| node_translation_plugins
node_reader -->|"loads extension"| node_tts_plugins
node_novel_plugins -->|"fetches content"| node_source_site
node_comic_plugins -->|"fetches content"| node_source_site
node_audio_plugins -->|"fetches content"| node_source_site
node_video_plugins -->|"fetches content"| node_source_site
node_reader -->|"invokes scripts"| node_content_listing
node_reader -->|"invokes script"| node_story_detail
node_reader -->|"invokes scripts"| node_chapter_index
node_reader -->|"invokes script"| node_chapter_content
node_reader -->|"invokes scripts"| node_optional_features
node_reader -->|"loads extension"| node_media_tools
node_templates_content -.->|"demonstrates scripts"| node_content_listing
node_tester_user -->|"configures run"| node_tester_panel
node_tester_panel -->|"dispatches action"| node_script_runner
node_script_runner -->|"reads script"| node_extension_files
node_script_runner -.->|"starts for legacy API"| node_legacy_server
node_script_runner -->|"sends run or install"| node_vbook_server
node_legacy_server -.->|"serves script files"| node_extension_files
node_tester_panel -->|"builds extension"| node_extension_files

click node_catalog_meta "https://github.com/darkrai9x/vbook-extensions/blob/master/repository.json"
click node_novel_plugins "https://github.com/darkrai9x/vbook-extensions/blob/master/truyenfull/plugin.json"
click node_comic_plugins "https://github.com/darkrai9x/vbook-extensions/blob/master/mangadex/plugin.json"
click node_audio_plugins "https://github.com/darkrai9x/vbook-extensions/blob/master/truyentranhaudio/plugin.json"
click node_video_plugins "https://github.com/darkrai9x/vbook-extensions/blob/master/vieflix/plugin.json"
click node_translation_plugins "https://github.com/darkrai9x/vbook-extensions/blob/master/baidu-translate/plugin.json"
click node_tts_plugins "https://github.com/darkrai9x/vbook-extensions/blob/master/google-tts/plugin.json"
click node_content_listing "https://github.com/darkrai9x/vbook-extensions/blob/master/README.md"
click node_story_detail "https://github.com/darkrai9x/vbook-extensions/blob/master/README.md"
click node_chapter_index "https://github.com/darkrai9x/vbook-extensions/blob/master/README.md"
click node_chapter_content "https://github.com/darkrai9x/vbook-extensions/blob/master/README.md"
click node_optional_features "https://github.com/darkrai9x/vbook-extensions/blob/master/README.md"
click node_media_tools "https://github.com/darkrai9x/vbook-extensions/blob/master/translate.json"
click node_templates_content "https://github.com/darkrai9x/vbook-extensions/tree/master/.claude/skills/vbook-extensions/templates"
click node_tester_panel "https://github.com/darkrai9x/vbook-extensions/blob/master/vbook-vscode-tester/extension.js"
click node_script_runner "https://github.com/darkrai9x/vbook-extensions/blob/master/vbook-vscode-tester/extension.js"
click node_legacy_server "https://github.com/darkrai9x/vbook-extensions/blob/master/vbook-vscode-tester/extension.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_catalog_meta,node_novel_plugins,node_comic_plugins,node_audio_plugins,node_video_plugins,node_translation_plugins,node_tts_plugins toneBlue
class node_templates_content,node_extension_files toneAmber
class node_tester_panel,node_script_runner,node_legacy_server,node_vbook_server toneMint
class node_content_listing,node_story_detail,node_chapter_index,node_chapter_content,node_optional_features,node_media_tools toneRose
class node_reader,node_source_site,node_tester_user toneIndigo
```

## Components

### Extension catalog

- [Extension metadata](https://github.com/darkrai9x/vbook-extensions/blob/master/repository.json): `repository.json`
- [Novel extensions](https://github.com/darkrai9x/vbook-extensions/blob/master/truyenfull/plugin.json): `truyenfull/plugin.json`
- [Comic extensions](https://github.com/darkrai9x/vbook-extensions/blob/master/mangadex/plugin.json): `mangadex/plugin.json`
- [Audio extensions](https://github.com/darkrai9x/vbook-extensions/blob/master/truyentranhaudio/plugin.json): `truyentranhaudio/plugin.json`
- [Video extensions](https://github.com/darkrai9x/vbook-extensions/blob/master/vieflix/plugin.json): `vieflix/plugin.json`
- [Translation extensions](https://github.com/darkrai9x/vbook-extensions/blob/master/baidu-translate/plugin.json): `baidu-translate/plugin.json`
- [Speech extensions](https://github.com/darkrai9x/vbook-extensions/blob/master/google-tts/plugin.json): `google-tts/plugin.json`

### Authoring templates

- [Media templates](https://github.com/darkrai9x/vbook-extensions/tree/master/.claude/skills/vbook-extensions/templates): `.claude/skills/vbook-extensions/templates`

### VS Code tester

- [Tester panel](https://github.com/darkrai9x/vbook-extensions/blob/master/vbook-vscode-tester/extension.js): `vbook-vscode-tester/extension.js`
- [Script runner](https://github.com/darkrai9x/vbook-extensions/blob/master/vbook-vscode-tester/extension.js): `vbook-vscode-tester/extension.js`
- [Legacy file server](https://github.com/darkrai9x/vbook-extensions/blob/master/vbook-vscode-tester/extension.js): `vbook-vscode-tester/extension.js`

### Extension protocol

- [Browse and search](https://github.com/darkrai9x/vbook-extensions/blob/master/README.md): `README.md`
- [Story details](https://github.com/darkrai9x/vbook-extensions/blob/master/README.md): `README.md`
- [Chapter index](https://github.com/darkrai9x/vbook-extensions/blob/master/README.md): `README.md`
- [Chapter content](https://github.com/darkrai9x/vbook-extensions/blob/master/README.md): `README.md`
- [Related and comments](https://github.com/darkrai9x/vbook-extensions/blob/master/README.md): `README.md`
- [Translate and TTS](https://github.com/darkrai9x/vbook-extensions/blob/master/translate.json): `translate.json`

### Other components

- **vBook reader**
- **Content websites**
- **Extension author**
- **vBook server**
- **Extension files**

## Connections

- vBook reader → Extension metadata: loads catalog
- vBook reader → Novel extensions: loads extension
- vBook reader → Comic extensions: loads extension
- vBook reader → Audio extensions: loads extension
- vBook reader → Video extensions: loads extension
- vBook reader → Translation extensions: loads extension
- vBook reader → Speech extensions: loads extension
- Novel extensions → Content websites: fetches content
- Comic extensions → Content websites: fetches content
- Audio extensions → Content websites: fetches content
- Video extensions → Content websites: fetches content
- vBook reader → Browse and search: invokes scripts
- vBook reader → Story details: invokes script
- vBook reader → Chapter index: invokes scripts
- vBook reader → Chapter content: invokes script
- vBook reader → Related and comments: invokes scripts
- vBook reader → Translate and TTS: loads extension
- Media templates → Browse and search: demonstrates scripts
- Extension author → Tester panel: configures run
- Tester panel → Script runner: dispatches action
- Script runner → Extension files: reads script
- Script runner → Legacy file server: starts for legacy API
- Script runner → vBook server: sends run or install
- Legacy file server → Extension files: serves script files
- Tester panel → Extension files: builds extension
