# woosal1337/blog architecture

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

## Overview

chele.bi is a personal editorial blog and portfolio. Visitors enter through the home page or navigate to writing, videos, projects, gallery, lab, and other portfolio sections; the site presents authored content and interactive visual features. The README documents MDX posts and generated contour covers, while sampled code confirms the home page aggregates blog, episode, and GitHub data and the RSS and image routes use blog utilities. Other section wiring is not sampled, so those links are omitted where uncertain.

Main entry points: [`app/(website)/page.tsx`](https://github.com/woosal1337/blog/blob/main/app/(website)/page.tsx) (Home page), [`lib/blog.ts`](https://github.com/woosal1337/blog/blob/main/lib/blog.ts) (Blog content), [`lib/seo.ts`](https://github.com/woosal1337/blog/blob/main/lib/seo.ts) (SEO metadata), [`app/blog-og/[slug]/route.tsx`](https://github.com/woosal1337/blog/blob/main/app/blog-og/%5Bslug%5D/route.tsx) (Post images)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_routes["Site routes"]
  node_home["Home page<br/>[page.tsx]"]
  node_blogpages["Blog pages<br/>[page.tsx]"]
  node_videopages["Video pages<br/>[page.tsx]"]
  node_gallerypages["Gallery pages<br/>[page.tsx]"]
  node_otherpages["Portfolio sections"]
end

subgraph group_content["Content domains"]
  node_blogcontent["Blog content<br/>[blog.ts]"]
  node_videocontent["Video content<br/>[videos.ts]"]
  node_gallerycontent["Gallery content<br/>[gallery.ts]"]
  node_projectdata["Project listings<br/>[page.tsx]"]
  node_bookdata["Reading shelf<br/>[books.ts]"]
  node_githubfeed["GitHub activity<br/>[github.ts]"]
end

subgraph group_presentation["Presentation"]
  node_blocks["Domain blocks"]
  node_designsystem["Design system"]
  node_rootlayout["Site shell<br/>[layout.tsx]"]
end

subgraph group_metadata["SEO and feeds"]
  node_rss["RSS feed<br/>[route.ts]"]
  node_blogimages["Post images<br/>[route.tsx]"]
  node_contour["Contour generator<br/>[contour.ts]"]
  node_seo["SEO metadata<br/>[seo.ts]"]
  node_jsonld["Structured data<br/>[json-ld.tsx]"]
end

node_visitor(("Visitor"))

node_visitor -->|"opens"| node_home
node_visitor -->|"navigates"| node_blogpages
node_visitor -->|"navigates"| node_videopages
node_visitor -->|"navigates"| node_gallerypages
node_visitor -->|"navigates"| node_otherpages
node_home -->|"loads posts"| node_blogcontent
node_home -->|"loads episodes"| node_videocontent
node_home -->|"loads activity"| node_githubfeed
node_home -->|"renders shelf"| node_bookdata
node_home -->|"renders sections"| node_blocks
node_home -->|"renders cards"| node_designsystem
node_rss -->|"loads posts"| node_blogcontent
node_blogimages -->|"loads post metadata"| node_blogcontent
node_blogimages -->|"generates mark"| node_contour
node_home -->|"renders schema"| node_jsonld
node_rootlayout -->|"uses site metadata"| node_seo
node_blogpages -.->|"uses metadata"| node_seo
node_videopages -.->|"uses metadata"| node_seo

click node_home "https://github.com/woosal1337/blog/blob/main/app/(website)/page.tsx"
click node_blogpages "https://github.com/woosal1337/blog/blob/main/app/(website)/blog/page.tsx"
click node_videopages "https://github.com/woosal1337/blog/blob/main/app/(website)/videos/page.tsx"
click node_gallerypages "https://github.com/woosal1337/blog/blob/main/app/(website)/gallery/page.tsx"
click node_otherpages "https://github.com/woosal1337/blog/tree/main/app/(website)"
click node_blogcontent "https://github.com/woosal1337/blog/blob/main/lib/blog.ts"
click node_videocontent "https://github.com/woosal1337/blog/blob/main/lib/videos.ts"
click node_gallerycontent "https://github.com/woosal1337/blog/blob/main/lib/gallery.ts"
click node_projectdata "https://github.com/woosal1337/blog/blob/main/app/(website)/projects/page.tsx"
click node_bookdata "https://github.com/woosal1337/blog/blob/main/data/books.ts"
click node_githubfeed "https://github.com/woosal1337/blog/blob/main/lib/github.ts"
click node_blocks "https://github.com/woosal1337/blog/tree/main/components/blocks"
click node_designsystem "https://github.com/woosal1337/blog/tree/main/components/ds"
click node_rootlayout "https://github.com/woosal1337/blog/blob/main/app/layout.tsx"
click node_rss "https://github.com/woosal1337/blog/blob/main/app/(website)/blog/rss.xml/route.ts"
click node_blogimages "https://github.com/woosal1337/blog/blob/main/app/blog-og/%5Bslug%5D/route.tsx"
click node_contour "https://github.com/woosal1337/blog/blob/main/lib/contour.ts"
click node_seo "https://github.com/woosal1337/blog/blob/main/lib/seo.ts"
click node_jsonld "https://github.com/woosal1337/blog/blob/main/components/seo/json-ld.tsx"

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_home,node_blogpages,node_videopages,node_gallerypages,node_otherpages toneBlue
class node_blogcontent,node_videocontent,node_gallerycontent,node_projectdata,node_bookdata,node_githubfeed toneAmber
class node_blocks,node_designsystem,node_rootlayout toneMint
class node_rss,node_blogimages,node_contour,node_seo,node_jsonld toneRose
class node_visitor toneIndigo
```

## Components

### Site routes

- [Home page](https://github.com/woosal1337/blog/blob/main/app/(website)/page.tsx): `app/(website)/page.tsx`
- [Blog pages](https://github.com/woosal1337/blog/blob/main/app/(website)/blog/page.tsx): `app/(website)/blog/page.tsx`
- [Video pages](https://github.com/woosal1337/blog/blob/main/app/(website)/videos/page.tsx): `app/(website)/videos/page.tsx`
- [Gallery pages](https://github.com/woosal1337/blog/blob/main/app/(website)/gallery/page.tsx): `app/(website)/gallery/page.tsx`
- [Portfolio sections](https://github.com/woosal1337/blog/tree/main/app/(website)): `app/(website)`

### Content domains

- [Blog content](https://github.com/woosal1337/blog/blob/main/lib/blog.ts): `lib/blog.ts`
- [Video content](https://github.com/woosal1337/blog/blob/main/lib/videos.ts): `lib/videos.ts`
- [Gallery content](https://github.com/woosal1337/blog/blob/main/lib/gallery.ts): `lib/gallery.ts`
- [Project listings](https://github.com/woosal1337/blog/blob/main/app/(website)/projects/page.tsx): `app/(website)/projects/page.tsx`
- [Reading shelf](https://github.com/woosal1337/blog/blob/main/data/books.ts): `data/books.ts`
- [GitHub activity](https://github.com/woosal1337/blog/blob/main/lib/github.ts): `lib/github.ts`

### Presentation

- [Domain blocks](https://github.com/woosal1337/blog/tree/main/components/blocks): `components/blocks`
- [Design system](https://github.com/woosal1337/blog/tree/main/components/ds): `components/ds`
- [Site shell](https://github.com/woosal1337/blog/blob/main/app/layout.tsx): `app/layout.tsx`

### SEO and feeds

- [RSS feed](https://github.com/woosal1337/blog/blob/main/app/(website)/blog/rss.xml/route.ts): `app/(website)/blog/rss.xml/route.ts`
- [Post images](https://github.com/woosal1337/blog/blob/main/app/blog-og/%5Bslug%5D/route.tsx): `app/blog-og/[slug]/route.tsx`
- [Contour generator](https://github.com/woosal1337/blog/blob/main/lib/contour.ts): `lib/contour.ts`
- [SEO metadata](https://github.com/woosal1337/blog/blob/main/lib/seo.ts): `lib/seo.ts`
- [Structured data](https://github.com/woosal1337/blog/blob/main/components/seo/json-ld.tsx): `components/seo/json-ld.tsx`

### Other components

- **Visitor**

## Connections

- Visitor → Home page: opens
- Visitor → Blog pages: navigates
- Visitor → Video pages: navigates
- Visitor → Gallery pages: navigates
- Visitor → Portfolio sections: navigates
- Home page → Blog content: loads posts
- Home page → Video content: loads episodes
- Home page → GitHub activity: loads activity
- Home page → Reading shelf: renders shelf
- Home page → Domain blocks: renders sections
- Home page → Design system: renders cards
- RSS feed → Blog content: loads posts
- Post images → Blog content: loads post metadata
- Post images → Contour generator: generates mark
- Home page → Structured data: renders schema
- Site shell → SEO metadata: uses site metadata
- Blog pages → SEO metadata: uses metadata
- Video pages → SEO metadata: uses metadata
