# coldairboys/firefly-replica architecture

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

## Overview

This repository is a personalized Astro/Svelte blog, configured around the Firefly theme. The reader-facing workflow is to browse and read blog content, find posts through search, and receive or share content through RSS and generated social-preview images. Configuration also advertises comments, galleries, music, friends, and visual settings. The tree and excerpts establish these feature areas, but do not expose the main page templates or all component wiring; uncertain connections are therefore omitted.

Main entry points: [`src/components/controls/Search.svelte`](https://github.com/coldairboys/firefly-replica/blob/main/src/components/controls/Search.svelte) (Search control), [`src/pages/rss.xml.ts`](https://github.com/coldairboys/firefly-replica/blob/main/src/pages/rss.xml.ts) (RSS feed), [`src/content.config.ts`](https://github.com/coldairboys/firefly-replica/blob/main/src/content.config.ts) (Post collection), [`src/components/pages/AdvancedSearch.svelte`](https://github.com/coldairboys/firefly-replica/blob/main/src/components/pages/AdvancedSearch.svelte) (Advanced search)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_content["Content and feeds"]
  node_post_content["Post collection<br/>[content.config.ts]"]
  node_rss_feed["RSS feed<br/>[rss.xml.ts]"]
  node_post_meta["Post metadata API"]
  node_og_image["Social preview image<br/>[&#91;...slug&#93;.png.ts]"]
end

subgraph group_reader["Reader experience"]
  node_search_control["Search control<br/>[Search.svelte]"]
  node_advanced_search["Advanced search"]
  node_pagefind["Pagefind search"]
  node_share_poster["Share poster<br/>[SharePoster.svelte]"]
end

subgraph group_personalization["Site personalization"]
  node_comment_settings["Comment settings<br/>[commentConfig.ts]"]
  node_site_settings["Site settings<br/>[index.ts]"]
  node_display_settings["Display controls"]
  node_wallpaper_control["Wallpaper control"]
  node_gallery_settings["Gallery settings<br/>[galleryConfig.ts]"]
  node_music_settings["Music settings<br/>[musicConfig.ts]"]
  node_friends_settings["Friends settings<br/>[friendsConfig.ts]"]
end

subgraph group_shared["Shared services"]
  node_content_utils["Post utilities<br/>[content-utils.ts]"]
  node_navigation["Navigation utilities"]
  node_translations["Translations<br/>[translation.ts]"]
end

node_reader_actor(("Blog reader"))
node_giscus["Giscus comments"]

node_reader_actor -->|"searches"| node_search_control
node_reader_actor -->|"searches"| node_advanced_search
node_reader_actor -->|"shares post"| node_share_poster
node_search_control -->|"queries"| node_pagefind
node_advanced_search -->|"queries"| node_pagefind
node_search_control -->|"navigates"| node_navigation
node_rss_feed -->|"gets sorted posts"| node_content_utils
node_rss_feed -->|"renders posts"| node_post_content
node_post_meta -->|"reads metadata"| node_post_content
node_og_image -->|"loads posts"| node_post_content
node_share_poster -->|"offers poster"| node_reader_actor
node_comment_settings -.->|"configures comments"| node_giscus
node_display_settings -->|"uses settings"| node_site_settings
node_wallpaper_control -->|"uses settings"| node_site_settings
node_reader_actor -->|"subscribes"| node_rss_feed

click node_post_content "https://github.com/coldairboys/firefly-replica/blob/main/src/content.config.ts"
click node_content_utils "https://github.com/coldairboys/firefly-replica/blob/main/src/utils/content-utils.ts"
click node_rss_feed "https://github.com/coldairboys/firefly-replica/blob/main/src/pages/rss.xml.ts"
click node_post_meta "https://github.com/coldairboys/firefly-replica/blob/main/src/pages/api/allPostMeta.json.ts"
click node_og_image "https://github.com/coldairboys/firefly-replica/blob/main/src/pages/og/%5B...slug%5D.png.ts"
click node_search_control "https://github.com/coldairboys/firefly-replica/blob/main/src/components/controls/Search.svelte"
click node_advanced_search "https://github.com/coldairboys/firefly-replica/blob/main/src/components/pages/AdvancedSearch.svelte"
click node_navigation "https://github.com/coldairboys/firefly-replica/blob/main/src/utils/navigation-utils.ts"
click node_share_poster "https://github.com/coldairboys/firefly-replica/blob/main/src/components/misc/SharePoster.svelte"
click node_comment_settings "https://github.com/coldairboys/firefly-replica/blob/main/src/config/commentConfig.ts"
click node_site_settings "https://github.com/coldairboys/firefly-replica/blob/main/src/config/index.ts"
click node_display_settings "https://github.com/coldairboys/firefly-replica/blob/main/src/components/controls/DisplaySettings.svelte"
click node_wallpaper_control "https://github.com/coldairboys/firefly-replica/blob/main/src/components/controls/WallpaperSwitch.svelte"
click node_gallery_settings "https://github.com/coldairboys/firefly-replica/blob/main/src/config/galleryConfig.ts"
click node_music_settings "https://github.com/coldairboys/firefly-replica/blob/main/src/config/musicConfig.ts"
click node_friends_settings "https://github.com/coldairboys/firefly-replica/blob/main/src/config/friendsConfig.ts"
click node_translations "https://github.com/coldairboys/firefly-replica/blob/main/src/i18n/translation.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_post_content,node_rss_feed,node_post_meta,node_og_image toneBlue
class node_search_control,node_advanced_search,node_pagefind,node_share_poster toneAmber
class node_comment_settings,node_site_settings,node_display_settings,node_wallpaper_control,node_gallery_settings,node_music_settings,node_friends_settings toneMint
class node_content_utils,node_navigation,node_translations toneRose
class node_reader_actor,node_giscus toneIndigo
```

## Components

### Content and feeds

- [Post collection](https://github.com/coldairboys/firefly-replica/blob/main/src/content.config.ts): `src/content.config.ts`
- [RSS feed](https://github.com/coldairboys/firefly-replica/blob/main/src/pages/rss.xml.ts): `src/pages/rss.xml.ts`
- [Post metadata API](https://github.com/coldairboys/firefly-replica/blob/main/src/pages/api/allPostMeta.json.ts): `src/pages/api/allPostMeta.json.ts`
- [Social preview image](https://github.com/coldairboys/firefly-replica/blob/main/src/pages/og/%5B...slug%5D.png.ts): `src/pages/og/[...slug].png.ts`

### Reader experience

- [Search control](https://github.com/coldairboys/firefly-replica/blob/main/src/components/controls/Search.svelte): `src/components/controls/Search.svelte`
- [Advanced search](https://github.com/coldairboys/firefly-replica/blob/main/src/components/pages/AdvancedSearch.svelte): `src/components/pages/AdvancedSearch.svelte`
- **Pagefind search**
- [Share poster](https://github.com/coldairboys/firefly-replica/blob/main/src/components/misc/SharePoster.svelte): `src/components/misc/SharePoster.svelte`

### Site personalization

- [Comment settings](https://github.com/coldairboys/firefly-replica/blob/main/src/config/commentConfig.ts): `src/config/commentConfig.ts`
- [Site settings](https://github.com/coldairboys/firefly-replica/blob/main/src/config/index.ts): `src/config/index.ts`
- [Display controls](https://github.com/coldairboys/firefly-replica/blob/main/src/components/controls/DisplaySettings.svelte): `src/components/controls/DisplaySettings.svelte`
- [Wallpaper control](https://github.com/coldairboys/firefly-replica/blob/main/src/components/controls/WallpaperSwitch.svelte): `src/components/controls/WallpaperSwitch.svelte`
- [Gallery settings](https://github.com/coldairboys/firefly-replica/blob/main/src/config/galleryConfig.ts): `src/config/galleryConfig.ts`
- [Music settings](https://github.com/coldairboys/firefly-replica/blob/main/src/config/musicConfig.ts): `src/config/musicConfig.ts`
- [Friends settings](https://github.com/coldairboys/firefly-replica/blob/main/src/config/friendsConfig.ts): `src/config/friendsConfig.ts`

### Shared services

- [Post utilities](https://github.com/coldairboys/firefly-replica/blob/main/src/utils/content-utils.ts): `src/utils/content-utils.ts`
- [Navigation utilities](https://github.com/coldairboys/firefly-replica/blob/main/src/utils/navigation-utils.ts): `src/utils/navigation-utils.ts`
- [Translations](https://github.com/coldairboys/firefly-replica/blob/main/src/i18n/translation.ts): `src/i18n/translation.ts`

### Other components

- **Blog reader**
- **Giscus comments**

## Connections

- Blog reader → Search control: searches
- Blog reader → Advanced search: searches
- Blog reader → Share poster: shares post
- Search control → Pagefind search: queries
- Advanced search → Pagefind search: queries
- Search control → Navigation utilities: navigates
- RSS feed → Post utilities: gets sorted posts
- RSS feed → Post collection: renders posts
- Post metadata API → Post collection: reads metadata
- Social preview image → Post collection: loads posts
- Share poster → Blog reader: offers poster
- Comment settings → Giscus comments: configures comments
- Display controls → Site settings: uses settings
- Wallpaper control → Site settings: uses settings
- Blog reader → RSS feed: subscribes
