# lukenccode/logic-blog architecture

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

## Overview

RawLogic is a static, single-page blog. Visitors browse and filter published posts, then open an article whose Markdown is loaded on demand; site metadata and configuration load at startup. The README documents localStorage fallback and legacy content compatibility. The main implementation is concentrated in index.html, whose source was not sampled, so the diagram follows documented behavior and omits uncertain internal call wiring.

Main entry points: [`index.html`](https://github.com/lukenccode/logic-blog/blob/main/index.html) (SPA and routing), [`data/posts.js`](https://github.com/lukenccode/logic-blog/blob/main/data/posts.js) (Post metadata), [`data/announcement.js`](https://github.com/lukenccode/logic-blog/blob/main/data/announcement.js) (Announcement), [`data/site.js`](https://github.com/lukenccode/logic-blog/blob/main/data/site.js) (Site configuration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Blog experience"]
  node_spa["SPA and routing<br/>[index.html]"]
  node_discovery["Search and filters<br/>[index.html]"]
  node_article["Article view<br/>[index.html]"]
  node_markdown["Markdown rendering<br/>[index.html]"]
end

subgraph group_content["Content and settings"]
  node_announcement["Announcement<br/>[announcement.js]"]
  node_posts["Post metadata<br/>[posts.js]"]
  node_site["Site configuration<br/>[site.js]"]
  node_body["Article Markdown"]
  node_cache[("Browser cache")]
end

subgraph group_assets["Static assets"]
  node_fonts["Local fonts"]
  node_images["Article images"]
end

node_visitor(("Visitor"))
node_hosting["Static hosting"]

node_visitor -->|"opens site"| node_spa
node_spa -->|"loads metadata"| node_posts
node_spa -->|"loads settings"| node_site
node_spa -->|"loads notice"| node_announcement
node_spa -->|"shows listing"| node_discovery
node_visitor -->|"searches"| node_discovery
node_discovery -->|"filters posts"| node_posts
node_visitor -->|"opens post"| node_article
node_article -->|"fetches Markdown"| node_body
node_article -->|"reads fallback"| node_cache
node_article -->|"renders content"| node_markdown
node_markdown -->|"displays images"| node_images
node_spa -->|"loads fonts"| node_fonts
node_hosting -->|"serves site"| node_spa
node_hosting -->|"serves data"| node_posts
node_hosting -->|"serves data"| node_site
node_hosting -->|"serves data"| node_announcement
node_hosting -->|"serves article"| node_body

click node_spa "https://github.com/lukenccode/logic-blog/blob/main/index.html"
click node_discovery "https://github.com/lukenccode/logic-blog/blob/main/index.html"
click node_article "https://github.com/lukenccode/logic-blog/blob/main/index.html"
click node_markdown "https://github.com/lukenccode/logic-blog/blob/main/index.html"
click node_announcement "https://github.com/lukenccode/logic-blog/blob/main/data/announcement.js"
click node_posts "https://github.com/lukenccode/logic-blog/blob/main/data/posts.js"
click node_site "https://github.com/lukenccode/logic-blog/blob/main/data/site.js"
click node_body "https://github.com/lukenccode/logic-blog/blob/main/data/content/vscode-cmake-stm32.md"
click node_fonts "https://github.com/lukenccode/logic-blog/tree/main/fonts"
click node_images "https://github.com/lukenccode/logic-blog/tree/main/images"

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_spa,node_discovery,node_article,node_markdown toneBlue
class node_announcement,node_posts,node_site,node_body,node_cache toneAmber
class node_fonts,node_images toneMint
class node_visitor,node_hosting toneIndigo
```

## Components

### Blog experience

- [SPA and routing](https://github.com/lukenccode/logic-blog/blob/main/index.html): `index.html`
- [Search and filters](https://github.com/lukenccode/logic-blog/blob/main/index.html): `index.html`
- [Article view](https://github.com/lukenccode/logic-blog/blob/main/index.html): `index.html`
- [Markdown rendering](https://github.com/lukenccode/logic-blog/blob/main/index.html): `index.html`

### Content and settings

- [Announcement](https://github.com/lukenccode/logic-blog/blob/main/data/announcement.js): `data/announcement.js`
- [Post metadata](https://github.com/lukenccode/logic-blog/blob/main/data/posts.js): `data/posts.js`
- [Site configuration](https://github.com/lukenccode/logic-blog/blob/main/data/site.js): `data/site.js`
- [Article Markdown](https://github.com/lukenccode/logic-blog/blob/main/data/content/vscode-cmake-stm32.md): `data/content/vscode-cmake-stm32.md`
- **Browser cache**

### Static assets

- [Local fonts](https://github.com/lukenccode/logic-blog/tree/main/fonts): `fonts`
- [Article images](https://github.com/lukenccode/logic-blog/tree/main/images): `images`

### Other components

- **Visitor**
- **Static hosting**

## Connections

- Visitor → SPA and routing: opens site
- SPA and routing → Post metadata: loads metadata
- SPA and routing → Site configuration: loads settings
- SPA and routing → Announcement: loads notice
- SPA and routing → Search and filters: shows listing
- Visitor → Search and filters: searches
- Search and filters → Post metadata: filters posts
- Visitor → Article view: opens post
- Article view → Article Markdown: fetches Markdown
- Article view → Browser cache: reads fallback
- Article view → Markdown rendering: renders content
- Markdown rendering → Article images: displays images
- SPA and routing → Local fonts: loads fonts
- Static hosting → SPA and routing: serves site
- Static hosting → Post metadata: serves data
- Static hosting → Site configuration: serves data
- Static hosting → Announcement: serves data
- Static hosting → Article Markdown: serves article
