# lyravoid/shirone architecture

> Architecture diagram of the GitHub repository lyravoid/shirone, 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/lyravoid/shirone
- Repository: https://github.com/lyravoid/shirone

## Overview

Shirone is an Astro/Svelte personal-blog theme: visitors read server-rendered posts and browse personal collections, while authors configure the site and provide Markdown/MDX content. The main rendering path runs from authored content through Markdown enhancements into pages and interactive components; related capabilities include search, feeds, AI-friendly text endpoints, theming, and optional integrations. Paths and relationships use the README and supplied source index/excerpts; unsampled feature internals are represented at subsystem level rather than inferred in detail.

Main entry points: [`src/pages`](https://github.com/lyravoid/shirone/tree/main/src/pages) (Rendered pages), [`src/config/siteConfig.ts`](https://github.com/lyravoid/shirone/blob/main/src/config/siteConfig.ts) (Site configuration), [`src/components`](https://github.com/lyravoid/shirone/tree/main/src/components) (UI components), [`src/pages/llms.txt.ts`](https://github.com/lyravoid/shirone/blob/main/src/pages/llms.txt.ts) (LLM text endpoint)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_content["Content and publishing"]
  node_content["Posts and MDX<br/>[content.config.ts]"]
  node_markdown["Markdown pipeline"]
  node_posts["Post discovery"]
end

subgraph group_experience["Reader experience"]
  node_pages["Rendered pages"]
  node_components["UI components"]
end

subgraph group_platform["Theme platform"]
  node_themeconfig["Site configuration<br/>[siteConfig.ts]"]
  node_configoverlay["Config overlays<br/>[config-overlay.ts]"]
  node_integration["Astro integration<br/>[index.ts]"]
  node_routes["Route registration<br/>[routes.ts]"]
  node_fonts["Font integration<br/>[fonts.ts]"]
  node_configtypes["Config contracts<br/>[config.ts]"]
  node_locales["Interface locales"]
  node_translations["Translation runtime<br/>[translation.ts]"]
  node_sidebartypes["Sidebar contracts<br/>[sidebarConfig.ts]"]
end

subgraph group_collections["Personal collections"]
  node_collections["Collection sections"]
  node_data["Collection data"]
  node_musicconfig["Music configuration<br/>[musicConfig.ts]"]
  node_musicplayer["Music sidebar player"]
  node_musicruntime["Music runtime"]
  node_musictypes["Music contracts<br/>[musicConfig.ts]"]
end

subgraph group_outputs["Feeds and discovery"]
  node_search["Full-text search<br/>[Search.svelte]"]
  node_rss["RSS feed<br/>[rss.xml.ts]"]
  node_sitemap["Sitemap output<br/>[sitemapFilter.ts]"]
  node_llmsconfig["LLM configuration<br/>[llmsConfig.ts]"]
  node_llmsutils["LLM text generator<br/>[llms-utils.ts]"]
  node_llmsendpoint["LLM text endpoint<br/>[llms.txt.ts]"]
  node_llmsfull["Full-text endpoint<br/>[llms-full.txt.ts]"]
end

node_author(("Site author"))
node_reader(("Site visitor"))

node_author -->|"writes"| node_content
node_author -->|"configures"| node_themeconfig
node_content -->|"processes"| node_markdown
node_markdown -->|"renders into"| node_pages
node_reader -->|"browses"| node_pages
node_themeconfig -->|"supports overlays"| node_configoverlay
node_configoverlay -.->|"resolves settings"| node_themeconfig
node_integration -.->|"registers routes"| node_routes
node_integration -->|"configures fonts"| node_fonts
node_integration -->|"loads settings"| node_themeconfig
node_themeconfig -->|"uses contracts"| node_configtypes
node_pages -->|"renders interface"| node_components
node_pages -->|"lists articles"| node_posts
node_pages -->|"serves feed"| node_rss
node_pages -->|"provides sitemap"| node_sitemap
node_components -->|"includes search"| node_search
node_reader -->|"searches posts"| node_search
node_pages -->|"serves text index"| node_llmsendpoint
node_llmsendpoint -->|"loads articles"| node_posts
node_llmsendpoint -->|"reads settings"| node_llmsconfig
node_llmsendpoint -->|"generates text"| node_llmsutils
node_pages -->|"serves full text"| node_llmsfull
node_components -->|"presents collections"| node_collections
node_collections -.->|"uses collection data"| node_data
node_musicplayer -->|"loads runtime"| node_musicruntime
node_musicplayer -->|"receives options"| node_musicconfig
node_musicconfig -->|"uses contract"| node_musictypes
node_musicplayer -.->|"uses sidebar contract"| node_sidebartypes
node_translations -->|"selects translations"| node_locales
node_components -.->|"localizes interface"| node_translations

click node_content "https://github.com/lyravoid/shirone/blob/main/src/content.config.ts"
click node_markdown "https://github.com/lyravoid/shirone/tree/main/src/plugins/markdown"
click node_posts "https://github.com/lyravoid/shirone/blob/main/src/utils/article-discovery.ts"
click node_themeconfig "https://github.com/lyravoid/shirone/blob/main/src/config/siteConfig.ts"
click node_configoverlay "https://github.com/lyravoid/shirone/blob/main/src/utils/config-overlay.ts"
click node_integration "https://github.com/lyravoid/shirone/blob/main/src/integration/index.ts"
click node_routes "https://github.com/lyravoid/shirone/blob/main/src/integration/routes.ts"
click node_fonts "https://github.com/lyravoid/shirone/blob/main/src/integration/fonts.ts"
click node_configtypes "https://github.com/lyravoid/shirone/blob/main/src/types/config.ts"
click node_locales "https://github.com/lyravoid/shirone/tree/main/src/i18n/languages"
click node_translations "https://github.com/lyravoid/shirone/blob/main/src/i18n/translation.ts"
click node_pages "https://github.com/lyravoid/shirone/tree/main/src/pages"
click node_components "https://github.com/lyravoid/shirone/tree/main/src/components"
click node_search "https://github.com/lyravoid/shirone/blob/main/src/components/organisms/Search.svelte"
click node_rss "https://github.com/lyravoid/shirone/blob/main/src/pages/rss.xml.ts"
click node_sitemap "https://github.com/lyravoid/shirone/blob/main/src/config/sitemapFilter.ts"
click node_llmsconfig "https://github.com/lyravoid/shirone/blob/main/src/config/llmsConfig.ts"
click node_llmsutils "https://github.com/lyravoid/shirone/blob/main/src/utils/llms-utils.ts"
click node_llmsendpoint "https://github.com/lyravoid/shirone/blob/main/src/pages/llms.txt.ts"
click node_llmsfull "https://github.com/lyravoid/shirone/blob/main/src/pages/llms-full.txt.ts"
click node_collections "https://github.com/lyravoid/shirone/tree/main/src/components/organisms"
click node_data "https://github.com/lyravoid/shirone/tree/main/src/data"
click node_musicconfig "https://github.com/lyravoid/shirone/blob/main/src/config/musicConfig.ts"
click node_musicplayer "https://github.com/lyravoid/shirone/blob/main/src/components/organisms/music/MusicSidebarClient.svelte"
click node_musicruntime "https://github.com/lyravoid/shirone/tree/main/src/utils/music"
click node_musictypes "https://github.com/lyravoid/shirone/blob/main/src/types/musicConfig.ts"
click node_sidebartypes "https://github.com/lyravoid/shirone/blob/main/src/types/sidebarConfig.ts"

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_content,node_markdown,node_posts toneBlue
class node_pages,node_components toneAmber
class node_themeconfig,node_configoverlay,node_integration,node_routes,node_fonts,node_configtypes,node_locales,node_translations,node_sidebartypes toneMint
class node_collections,node_data,node_musicconfig,node_musicplayer,node_musicruntime,node_musictypes toneRose
class node_search,node_rss,node_sitemap,node_llmsconfig,node_llmsutils,node_llmsendpoint,node_llmsfull,node_author,node_reader toneIndigo
```

## Components

### Content and publishing

- [Posts and MDX](https://github.com/lyravoid/shirone/blob/main/src/content.config.ts): `src/content.config.ts`
- [Markdown pipeline](https://github.com/lyravoid/shirone/tree/main/src/plugins/markdown): `src/plugins/markdown`
- [Post discovery](https://github.com/lyravoid/shirone/blob/main/src/utils/article-discovery.ts): `src/utils/article-discovery.ts`

### Reader experience

- [Rendered pages](https://github.com/lyravoid/shirone/tree/main/src/pages): `src/pages`
- [UI components](https://github.com/lyravoid/shirone/tree/main/src/components): `src/components`

### Theme platform

- [Site configuration](https://github.com/lyravoid/shirone/blob/main/src/config/siteConfig.ts): `src/config/siteConfig.ts`
- [Config overlays](https://github.com/lyravoid/shirone/blob/main/src/utils/config-overlay.ts): `src/utils/config-overlay.ts`
- [Astro integration](https://github.com/lyravoid/shirone/blob/main/src/integration/index.ts): `src/integration/index.ts`
- [Route registration](https://github.com/lyravoid/shirone/blob/main/src/integration/routes.ts): `src/integration/routes.ts`
- [Font integration](https://github.com/lyravoid/shirone/blob/main/src/integration/fonts.ts): `src/integration/fonts.ts`
- [Config contracts](https://github.com/lyravoid/shirone/blob/main/src/types/config.ts): `src/types/config.ts`
- [Interface locales](https://github.com/lyravoid/shirone/tree/main/src/i18n/languages): `src/i18n/languages`
- [Translation runtime](https://github.com/lyravoid/shirone/blob/main/src/i18n/translation.ts): `src/i18n/translation.ts`
- [Sidebar contracts](https://github.com/lyravoid/shirone/blob/main/src/types/sidebarConfig.ts): `src/types/sidebarConfig.ts`

### Personal collections

- [Collection sections](https://github.com/lyravoid/shirone/tree/main/src/components/organisms): `src/components/organisms`
- [Collection data](https://github.com/lyravoid/shirone/tree/main/src/data): `src/data`
- [Music configuration](https://github.com/lyravoid/shirone/blob/main/src/config/musicConfig.ts): `src/config/musicConfig.ts`
- [Music sidebar player](https://github.com/lyravoid/shirone/blob/main/src/components/organisms/music/MusicSidebarClient.svelte): `src/components/organisms/music/MusicSidebarClient.svelte`
- [Music runtime](https://github.com/lyravoid/shirone/tree/main/src/utils/music): `src/utils/music`
- [Music contracts](https://github.com/lyravoid/shirone/blob/main/src/types/musicConfig.ts): `src/types/musicConfig.ts`

### Feeds and discovery

- [Full-text search](https://github.com/lyravoid/shirone/blob/main/src/components/organisms/Search.svelte): `src/components/organisms/Search.svelte`
- [RSS feed](https://github.com/lyravoid/shirone/blob/main/src/pages/rss.xml.ts): `src/pages/rss.xml.ts`
- [Sitemap output](https://github.com/lyravoid/shirone/blob/main/src/config/sitemapFilter.ts): `src/config/sitemapFilter.ts`
- [LLM configuration](https://github.com/lyravoid/shirone/blob/main/src/config/llmsConfig.ts): `src/config/llmsConfig.ts`
- [LLM text generator](https://github.com/lyravoid/shirone/blob/main/src/utils/llms-utils.ts): `src/utils/llms-utils.ts`
- [LLM text endpoint](https://github.com/lyravoid/shirone/blob/main/src/pages/llms.txt.ts): `src/pages/llms.txt.ts`
- [Full-text endpoint](https://github.com/lyravoid/shirone/blob/main/src/pages/llms-full.txt.ts): `src/pages/llms-full.txt.ts`

### Other components

- **Site author**
- **Site visitor**

## Connections

- Site author → Posts and MDX: writes (evidence: `README.md`)
- Site author → Site configuration: configures (evidence: `README.md`)
- Posts and MDX → Markdown pipeline: processes (evidence: `README.md`)
- Markdown pipeline → Rendered pages: renders into (evidence: `README.md`)
- Site visitor → Rendered pages: browses (evidence: `README.md`)
- Site configuration → Config overlays: supports overlays
- Config overlays → Site configuration: resolves settings
- Astro integration → Route registration: registers routes (evidence: `src/integration/index.ts`)
- Astro integration → Font integration: configures fonts (evidence: `src/integration/index.ts`)
- Astro integration → Site configuration: loads settings (evidence: `src/integration/index.ts`)
- Site configuration → Config contracts: uses contracts
- Rendered pages → UI components: renders interface (evidence: `README.md`)
- Rendered pages → Post discovery: lists articles (evidence: `README.md`)
- Rendered pages → RSS feed: serves feed (evidence: `README.md`)
- Rendered pages → Sitemap output: provides sitemap (evidence: `README.md`)
- UI components → Full-text search: includes search (evidence: `README.md`)
- Site visitor → Full-text search: searches posts (evidence: `README.md`)
- Rendered pages → LLM text endpoint: serves text index (evidence: `src/pages/llms.txt.ts`)
- LLM text endpoint → Post discovery: loads articles (evidence: `src/pages/llms.txt.ts`)
- LLM text endpoint → LLM configuration: reads settings (evidence: `src/pages/llms.txt.ts`)
- LLM text endpoint → LLM text generator: generates text (evidence: `src/pages/llms.txt.ts`)
- Rendered pages → Full-text endpoint: serves full text (evidence: `README.md`)
- UI components → Collection sections: presents collections (evidence: `README.md`)
- Collection sections → Collection data: uses collection data
- Music sidebar player → Music runtime: loads runtime (evidence: `src/components/organisms/music/MusicSidebarClient.svelte`)
- Music sidebar player → Music configuration: receives options (evidence: `src/components/organisms/music/MusicSidebarClient.svelte`)
- Music configuration → Music contracts: uses contract (evidence: `src/config/musicConfig.ts`)
- Music sidebar player → Sidebar contracts: uses sidebar contract
- Translation runtime → Interface locales: selects translations (evidence: `src/i18n/translation.ts`)
- UI components → Translation runtime: localizes interface
