# r4p0/blog architecture

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

- Interactive diagram: https://gitdiagram.com/r4p0/blog
- Repository: https://github.com/r4p0/blog

## Overview

This repository is a Hexo-powered personal blog: Markdown posts and pages are rendered into a browsable site, with Landscape and Next theme configurations and a local Landscape theme providing presentation and browser interactions. The principal workflow is authoring content, generating pages, and a reader browsing posts and archives. The README only identifies the project as a blog, so specific site capabilities are inferred from the tree and sampled theme code; unsampled theme templates and Hexo internals limit call-level detail.

Main entry points: [`themes/landscape/source/fancybox/jquery.fancybox.js`](https://github.com/r4p0/blog/blob/master/themes/landscape/source/fancybox/jquery.fancybox.js) (Fancybox viewer), [`package.json`](https://github.com/r4p0/blog/blob/master/package.json) (Hexo site), [`themes/landscape/source/js/script.js`](https://github.com/r4p0/blog/blob/master/themes/landscape/source/js/script.js) (Theme interactions), [`source/_posts`](https://github.com/r4p0/blog/tree/master/source/_posts) (Articles)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_content["Blog content"]
  node_posts["Articles"]
  node_scaffolds["Content scaffolds"]
end

subgraph group_hexo["Site generation"]
  node_hexo_app["Hexo site<br/>[package.json]"]
  node_site_config["Site settings<br/>[_config.yml]"]
  node_themes_config["Theme settings<br/>[_config.next.yml]"]
  node_rendered_site["Generated site"]
end

subgraph group_theme["Presentation themes"]
  node_landscape_layouts["Page layouts"]
  node_landscape_styles["Theme styles"]
  node_fancybox_tag["Fancybox tag<br/>[fancybox.js]"]
end

subgraph group_browser["Browser features"]
  node_landscape_script["Theme interactions<br/>[script.js]"]
  node_fancybox_core["Fancybox viewer<br/>[jquery.fancybox.js]"]
  node_fancybox_packed["Packed viewer"]
  node_fancybox_media["Media helper"]
  node_fancybox_thumbs["Thumbnail helper"]
  node_fancybox_buttons["Viewer controls"]
end

node_author(("Blog author"))
node_reader(("Site reader"))
node_share_services["Social networks"]

node_author -->|"writes"| node_posts
node_author -.->|"starts content"| node_scaffolds
node_posts -.->|"renders content"| node_hexo_app
node_site_config -.->|"configures"| node_hexo_app
node_themes_config -.->|"selects theme"| node_hexo_app
node_hexo_app -->|"generates"| node_rendered_site
node_landscape_layouts -.->|"structures pages"| node_rendered_site
node_landscape_styles -.->|"styles pages"| node_rendered_site
node_reader -.->|"browses"| node_rendered_site
node_landscape_script -->|"opens galleries"| node_fancybox_core
node_landscape_script -->|"opens share links"| node_share_services
node_fancybox_tag -.->|"emits viewer markup"| node_fancybox_core
node_fancybox_media -->|"extends viewer"| node_fancybox_core
node_fancybox_thumbs -->|"extends viewer"| node_fancybox_core
node_fancybox_buttons -->|"controls viewer"| node_fancybox_core

click node_posts "https://github.com/r4p0/blog/tree/master/source/_posts"
click node_scaffolds "https://github.com/r4p0/blog/tree/master/scaffolds"
click node_hexo_app "https://github.com/r4p0/blog/blob/master/package.json"
click node_site_config "https://github.com/r4p0/blog/blob/master/_config.yml"
click node_themes_config "https://github.com/r4p0/blog/blob/master/_config.next.yml"
click node_landscape_layouts "https://github.com/r4p0/blog/tree/master/themes/landscape/layout"
click node_landscape_styles "https://github.com/r4p0/blog/tree/master/themes/landscape/source/css"
click node_landscape_script "https://github.com/r4p0/blog/blob/master/themes/landscape/source/js/script.js"
click node_fancybox_core "https://github.com/r4p0/blog/blob/master/themes/landscape/source/fancybox/jquery.fancybox.js"
click node_fancybox_packed "https://github.com/r4p0/blog/blob/master/themes/landscape/source/fancybox/jquery.fancybox.pack.js"
click node_fancybox_media "https://github.com/r4p0/blog/blob/master/themes/landscape/source/fancybox/helpers/jquery.fancybox-media.js"
click node_fancybox_thumbs "https://github.com/r4p0/blog/blob/master/themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.js"
click node_fancybox_buttons "https://github.com/r4p0/blog/blob/master/themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.js"
click node_fancybox_tag "https://github.com/r4p0/blog/blob/master/themes/landscape/scripts/fancybox.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_posts,node_scaffolds toneBlue
class node_hexo_app,node_site_config,node_themes_config,node_rendered_site toneAmber
class node_landscape_layouts,node_landscape_styles,node_fancybox_tag toneMint
class node_landscape_script,node_fancybox_core,node_fancybox_packed,node_fancybox_media,node_fancybox_thumbs,node_fancybox_buttons toneRose
class node_author,node_reader,node_share_services toneIndigo
```

## Components

### Blog content

- [Articles](https://github.com/r4p0/blog/tree/master/source/_posts): `source/_posts`
- [Content scaffolds](https://github.com/r4p0/blog/tree/master/scaffolds): `scaffolds`

### Site generation

- [Hexo site](https://github.com/r4p0/blog/blob/master/package.json): `package.json`
- [Site settings](https://github.com/r4p0/blog/blob/master/_config.yml): `_config.yml`
- [Theme settings](https://github.com/r4p0/blog/blob/master/_config.next.yml): `_config.next.yml`
- **Generated site**

### Presentation themes

- [Page layouts](https://github.com/r4p0/blog/tree/master/themes/landscape/layout): `themes/landscape/layout`
- [Theme styles](https://github.com/r4p0/blog/tree/master/themes/landscape/source/css): `themes/landscape/source/css`
- [Fancybox tag](https://github.com/r4p0/blog/blob/master/themes/landscape/scripts/fancybox.js): `themes/landscape/scripts/fancybox.js`

### Browser features

- [Theme interactions](https://github.com/r4p0/blog/blob/master/themes/landscape/source/js/script.js): `themes/landscape/source/js/script.js`
- [Fancybox viewer](https://github.com/r4p0/blog/blob/master/themes/landscape/source/fancybox/jquery.fancybox.js): `themes/landscape/source/fancybox/jquery.fancybox.js`
- [Packed viewer](https://github.com/r4p0/blog/blob/master/themes/landscape/source/fancybox/jquery.fancybox.pack.js): `themes/landscape/source/fancybox/jquery.fancybox.pack.js`
- [Media helper](https://github.com/r4p0/blog/blob/master/themes/landscape/source/fancybox/helpers/jquery.fancybox-media.js): `themes/landscape/source/fancybox/helpers/jquery.fancybox-media.js`
- [Thumbnail helper](https://github.com/r4p0/blog/blob/master/themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.js): `themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.js`
- [Viewer controls](https://github.com/r4p0/blog/blob/master/themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.js): `themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.js`

### Other components

- **Blog author**
- **Site reader**
- **Social networks**

## Connections

- Blog author → Articles: writes (evidence: `README.md`)
- Blog author → Content scaffolds: starts content
- Articles → Hexo site: renders content
- Site settings → Hexo site: configures
- Theme settings → Hexo site: selects theme
- Hexo site → Generated site: generates (evidence: `package.json`)
- Page layouts → Generated site: structures pages
- Theme styles → Generated site: styles pages
- Site reader → Generated site: browses
- Theme interactions → Fancybox viewer: opens galleries (evidence: `themes/landscape/source/js/script.js`)
- Theme interactions → Social networks: opens share links (evidence: `themes/landscape/source/js/script.js`)
- Fancybox tag → Fancybox viewer: emits viewer markup
- Media helper → Fancybox viewer: extends viewer (evidence: `themes/landscape/source/fancybox/helpers/jquery.fancybox-media.js`)
- Thumbnail helper → Fancybox viewer: extends viewer (evidence: `themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.js`)
- Viewer controls → Fancybox viewer: controls viewer (evidence: `themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.js`)
