# kittenluv1/website architecture

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

- Interactive diagram: https://gitdiagram.com/kittenluv1/website
- Repository: https://github.com/kittenluv1/website

## Overview

This is a personal Astro website: visitors browse the author’s writing, projects, creations, gallery, and microblog, with interactive modals on several sections. The graph highlights those content areas and shared modal behavior. The README describes the site only generally, and much of the page and data wiring was not sampled, so those relationships are shown as unverified rather than asserted; the sampled modal and helper connections are supported by source references.

Main entry points: [`src/pages/portfolio.astro`](https://github.com/kittenluv1/website/blob/main/src/pages/portfolio.astro) (Portfolio), [`src/pages/creations`](https://github.com/kittenluv1/website/tree/main/src/pages/creations) (Creations), [`src/components/modal/modal.ts`](https://github.com/kittenluv1/website/blob/main/src/components/modal/modal.ts) (Modal Service), [`src/pages/microblog.astro`](https://github.com/kittenluv1/website/blob/main/src/pages/microblog.astro) (Microblog)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_content["Content &amp; Writing"]
  node_writing["Writing Pages"]
  node_blog["Yearly Blog"]
  node_blogdata["Blog Entries"]
  node_microblog["Microblog<br/>[microblog.astro]"]
  node_bites["Bite Entries<br/>[bites.json]"]
  node_archives["Archived Pages"]
  node_microblogview["Bite View<br/>[Bite.astro]"]
end

subgraph group_showcase["Creative Showcase"]
  node_portfolio["Portfolio<br/>[portfolio.astro]"]
  node_portdata["Portfolio Data<br/>[portfolio.json]"]
  node_porthelpers["Portfolio Helpers<br/>[portfolio.ts]"]
  node_portmodal["Portfolio Modal<br/>[portfolioModal.ts]"]
  node_creations["Creations"]
  node_creationdata["Creation Data<br/>[creations.json]"]
  node_creationhelpers["Creation Helpers<br/>[creations.ts]"]
  node_creationmodal["Creation Modal<br/>[creationModal.ts]"]
  node_gallery["Image Gallery<br/>[gallery.astro]"]
  node_gallerydata["Gallery Data<br/>[gallery.json]"]
  node_gallerymodal["Gallery Modal<br/>[galleryModal.ts]"]
end

subgraph group_interactions["Interactive Features"]
  node_indexpage["Interactive Home<br/>[index.astro]"]
  node_indexmodal["Home Modal<br/>[modal.js]"]
  node_songs["Song List<br/>[songs.json]"]
  node_japantv["Japan TV<br/>[japan-tv.astro]"]
end

subgraph group_shared["Shared UI"]
  node_modalservice["Modal Service<br/>[modal.ts]"]
end

node_visitor(("Visitor"))

node_visitor -.->|"browses"| node_writing
node_visitor -.->|"reads"| node_blog
node_visitor -.->|"browses"| node_microblog
node_visitor -.->|"views"| node_portfolio
node_visitor -.->|"browses"| node_creations
node_visitor -.->|"views"| node_gallery
node_visitor -.->|"visits"| node_indexpage
node_visitor -.->|"browses"| node_archives
node_visitor -.->|"views"| node_japantv
node_blog -.->|"displays"| node_blogdata
node_microblog -.->|"displays"| node_bites
node_microblog -.->|"renders"| node_microblogview
node_portfolio -.->|"displays"| node_portdata
node_portfolio -.->|"uses"| node_porthelpers
node_portfolio -.->|"opens"| node_portmodal
node_portmodal -->|"uses"| node_porthelpers
node_portmodal -->|"calls"| node_modalservice
node_creations -.->|"displays"| node_creationdata
node_creations -.->|"uses"| node_creationhelpers
node_creations -.->|"opens"| node_creationmodal
node_creationmodal -->|"uses"| node_creationhelpers
node_creationmodal -->|"calls"| node_modalservice
node_gallery -.->|"displays"| node_gallerydata
node_gallery -.->|"opens"| node_gallerymodal
node_gallerymodal -->|"calls"| node_modalservice
node_indexpage -.->|"opens"| node_indexmodal
node_indexmodal -->|"reads"| node_songs
node_indexmodal -->|"calls"| node_modalservice

click node_writing "https://github.com/kittenluv1/website/tree/main/src/pages/writing"
click node_blog "https://github.com/kittenluv1/website/tree/main/src/pages/blog"
click node_blogdata "https://github.com/kittenluv1/website/tree/main/src/data/blogs"
click node_microblog "https://github.com/kittenluv1/website/blob/main/src/pages/microblog.astro"
click node_bites "https://github.com/kittenluv1/website/blob/main/src/data/bites.json"
click node_portfolio "https://github.com/kittenluv1/website/blob/main/src/pages/portfolio.astro"
click node_portdata "https://github.com/kittenluv1/website/blob/main/src/data/portfolio.json"
click node_porthelpers "https://github.com/kittenluv1/website/blob/main/src/lib/portfolio.ts"
click node_portmodal "https://github.com/kittenluv1/website/blob/main/src/components/portfolio/portfolioModal.ts"
click node_creations "https://github.com/kittenluv1/website/tree/main/src/pages/creations"
click node_creationdata "https://github.com/kittenluv1/website/blob/main/src/data/creations.json"
click node_creationhelpers "https://github.com/kittenluv1/website/blob/main/src/lib/creations.ts"
click node_creationmodal "https://github.com/kittenluv1/website/blob/main/src/components/creations/creationModal.ts"
click node_gallery "https://github.com/kittenluv1/website/blob/main/src/pages/gallery.astro"
click node_gallerydata "https://github.com/kittenluv1/website/blob/main/src/data/gallery.json"
click node_gallerymodal "https://github.com/kittenluv1/website/blob/main/src/components/gallery/galleryModal.ts"
click node_indexpage "https://github.com/kittenluv1/website/blob/main/src/pages/index.astro"
click node_indexmodal "https://github.com/kittenluv1/website/blob/main/src/components/index/modal.js"
click node_songs "https://github.com/kittenluv1/website/blob/main/src/data/songs.json"
click node_archives "https://github.com/kittenluv1/website/tree/main/src/pages/archive"
click node_japantv "https://github.com/kittenluv1/website/blob/main/src/pages/japan-tv.astro"
click node_modalservice "https://github.com/kittenluv1/website/blob/main/src/components/modal/modal.ts"
click node_microblogview "https://github.com/kittenluv1/website/blob/main/src/components/microblog/Bite.astro"

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_writing,node_blog,node_blogdata,node_microblog,node_bites,node_archives,node_microblogview toneBlue
class node_portfolio,node_portdata,node_porthelpers,node_portmodal,node_creations,node_creationdata,node_creationhelpers,node_creationmodal,node_gallery,node_gallerydata,node_gallerymodal toneAmber
class node_indexpage,node_indexmodal,node_songs,node_japantv toneMint
class node_modalservice toneRose
class node_visitor toneIndigo
```

## Components

### Content & Writing

- [Writing Pages](https://github.com/kittenluv1/website/tree/main/src/pages/writing): `src/pages/writing`
- [Yearly Blog](https://github.com/kittenluv1/website/tree/main/src/pages/blog): `src/pages/blog`
- [Blog Entries](https://github.com/kittenluv1/website/tree/main/src/data/blogs): `src/data/blogs`
- [Microblog](https://github.com/kittenluv1/website/blob/main/src/pages/microblog.astro): `src/pages/microblog.astro`
- [Bite Entries](https://github.com/kittenluv1/website/blob/main/src/data/bites.json): `src/data/bites.json`
- [Archived Pages](https://github.com/kittenluv1/website/tree/main/src/pages/archive): `src/pages/archive`
- [Bite View](https://github.com/kittenluv1/website/blob/main/src/components/microblog/Bite.astro): `src/components/microblog/Bite.astro`

### Creative Showcase

- [Portfolio](https://github.com/kittenluv1/website/blob/main/src/pages/portfolio.astro): `src/pages/portfolio.astro`
- [Portfolio Data](https://github.com/kittenluv1/website/blob/main/src/data/portfolio.json): `src/data/portfolio.json`
- [Portfolio Helpers](https://github.com/kittenluv1/website/blob/main/src/lib/portfolio.ts): `src/lib/portfolio.ts`
- [Portfolio Modal](https://github.com/kittenluv1/website/blob/main/src/components/portfolio/portfolioModal.ts): `src/components/portfolio/portfolioModal.ts`
- [Creations](https://github.com/kittenluv1/website/tree/main/src/pages/creations): `src/pages/creations`
- [Creation Data](https://github.com/kittenluv1/website/blob/main/src/data/creations.json): `src/data/creations.json`
- [Creation Helpers](https://github.com/kittenluv1/website/blob/main/src/lib/creations.ts): `src/lib/creations.ts`
- [Creation Modal](https://github.com/kittenluv1/website/blob/main/src/components/creations/creationModal.ts): `src/components/creations/creationModal.ts`
- [Image Gallery](https://github.com/kittenluv1/website/blob/main/src/pages/gallery.astro): `src/pages/gallery.astro`
- [Gallery Data](https://github.com/kittenluv1/website/blob/main/src/data/gallery.json): `src/data/gallery.json`
- [Gallery Modal](https://github.com/kittenluv1/website/blob/main/src/components/gallery/galleryModal.ts): `src/components/gallery/galleryModal.ts`

### Interactive Features

- [Interactive Home](https://github.com/kittenluv1/website/blob/main/src/pages/index.astro): `src/pages/index.astro`
- [Home Modal](https://github.com/kittenluv1/website/blob/main/src/components/index/modal.js): `src/components/index/modal.js`
- [Song List](https://github.com/kittenluv1/website/blob/main/src/data/songs.json): `src/data/songs.json`
- [Japan TV](https://github.com/kittenluv1/website/blob/main/src/pages/japan-tv.astro): `src/pages/japan-tv.astro`

### Shared UI

- [Modal Service](https://github.com/kittenluv1/website/blob/main/src/components/modal/modal.ts): `src/components/modal/modal.ts`

### Other components

- **Visitor**

## Connections

- Visitor → Writing Pages: browses
- Visitor → Yearly Blog: reads
- Visitor → Microblog: browses
- Visitor → Portfolio: views
- Visitor → Creations: browses
- Visitor → Image Gallery: views
- Visitor → Interactive Home: visits
- Visitor → Archived Pages: browses
- Visitor → Japan TV: views
- Yearly Blog → Blog Entries: displays
- Microblog → Bite Entries: displays
- Microblog → Bite View: renders
- Portfolio → Portfolio Data: displays
- Portfolio → Portfolio Helpers: uses
- Portfolio → Portfolio Modal: opens
- Portfolio Modal → Portfolio Helpers: uses (evidence: `src/components/portfolio/portfolioModal.ts`)
- Portfolio Modal → Modal Service: calls (evidence: `src/components/portfolio/portfolioModal.ts`)
- Creations → Creation Data: displays
- Creations → Creation Helpers: uses
- Creations → Creation Modal: opens
- Creation Modal → Creation Helpers: uses (evidence: `src/components/creations/creationModal.ts`)
- Creation Modal → Modal Service: calls (evidence: `src/components/creations/creationModal.ts`)
- Image Gallery → Gallery Data: displays
- Image Gallery → Gallery Modal: opens
- Gallery Modal → Modal Service: calls (evidence: `src/components/gallery/galleryModal.ts`)
- Interactive Home → Home Modal: opens
- Home Modal → Song List: reads (evidence: `src/components/index/modal.js`)
- Home Modal → Modal Service: calls (evidence: `src/components/index/modal.js`)
