# mdzakytaqillah/inori-minase-fanspage-indonesia architecture

> Architecture diagram of the GitHub repository mdzakytaqillah/inori-minase-fanspage-indonesia, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mdzakytaqillah/inori-minase-fanspage-indonesia
- Repository: https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia

## Overview

This is an Indonesian fan encyclopedia for seiyuu and singer Inori Minase. Visitors move through the shared navigation to a profile/timeline, paginated blog with social embeds, discography and live-concert history, or voice-acting pages with airing roles and statistics. The separate sync page fetches and scrapes MyAnimeList data, updates Vercel Blob datasets, and supports local backup. Edges reflect documented calls and data sources; unsampled page wiring is not inferred.

Main entry points: [`lib/syncBlob.ts`](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/syncBlob.ts) (Blob Data Access), [`app/navigation.tsx`](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/navigation.tsx) (Navigation), [`app/page.tsx`](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/page.tsx) (Profile & Timeline), [`app/discography/page.tsx`](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/discography/page.tsx) (Discography)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_site["Fan Pages"]
  node_layout["Site Layout<br/>[layout.tsx]"]
  node_navigation["Navigation<br/>[navigation.tsx]"]
  node_home["Profile &amp; Timeline<br/>[page.tsx]"]
  node_blog["Blog &amp; Embeds<br/>[page.tsx]"]
  node_discography["Discography<br/>[page.tsx]"]
  node_live["Live Concerts<br/>[page.tsx]"]
end

subgraph group_voice["Voice Data"]
  node_voicing["Voice Roles<br/>[page.tsx]"]
  node_stats["Voice Statistics<br/>[page.tsx]"]
  node_genre["Genre Selector<br/>[GenreClient.tsx]"]
  node_animecache["Anime Cache<br/>[anime_db.json]"]
  node_personcache["Person &amp; Roles<br/>[person_db.json]"]
  node_seiyuucache["Top Seiyuu Cache<br/>[topseiyuu_db.json]"]
end

subgraph group_sync["Data Sync"]
  node_syncui["Sync Console<br/>[page.tsx]"]
  node_malfetch["MAL Fetch &amp; Scrape<br/>[getDataMAL.ts]"]
  node_blob["Blob Data Access<br/>[syncBlob.ts]"]
end

subgraph group_content["Local Content"]
  node_blogdata["Blog Entries<br/>[blog.json]"]
  node_infodata["Home Information<br/>[info.json]"]
  node_profiledata["Artist Profile<br/>[profile.json]"]
  node_discdata["Discography Data<br/>[discography.json]"]
  node_livedata["Live History Data<br/>[live_history.json]"]
end

node_visitor(("Visitor"))
node_blobstore[("Vercel Blob")]
node_mal["MyAnimeList"]
node_embeds["Social Embed Platforms"]

node_visitor -->|"opens site"| node_navigation
node_navigation -->|"links to"| node_home
node_navigation -->|"links to"| node_blog
node_navigation -->|"links to"| node_discography
node_navigation -->|"links to"| node_voicing
node_layout -->|"renders"| node_navigation
node_home -->|"reads"| node_infodata
node_home -->|"reads"| node_profiledata
node_home -->|"requests profile image"| node_blob
node_blog -->|"reads"| node_blogdata
node_blog -.->|"renders embeds"| node_embeds
node_discography -->|"reads"| node_discdata
node_discography -->|"reads"| node_profiledata
node_discography -->|"links to"| node_live
node_live -->|"reads"| node_livedata
node_voicing -->|"reads"| node_profiledata
node_voicing -->|"loads datasets"| node_blob
node_stats -->|"loads datasets"| node_blob
node_stats -->|"reads"| node_profiledata
node_stats -->|"renders selector"| node_genre
node_syncui -->|"reads and writes"| node_blob
node_syncui -->|"requests sync data"| node_malfetch
node_malfetch -->|"fetches and scrapes"| node_mal
node_blob -->|"reads and writes"| node_blobstore
node_blob -->|"downloads backup"| node_animecache
node_blob -->|"downloads backup"| node_personcache
node_blob -->|"downloads backup"| node_seiyuucache
node_syncui -->|"local backup result"| node_animecache

click node_layout "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/layout.tsx"
click node_navigation "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/navigation.tsx"
click node_home "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/page.tsx"
click node_blog "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/blog/page.tsx"
click node_discography "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/discography/page.tsx"
click node_live "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/discography/live/page.tsx"
click node_voicing "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/voicing/page.tsx"
click node_stats "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/voicing/stats/page.tsx"
click node_genre "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/voicing/stats/GenreClient.tsx"
click node_syncui "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/sync-data/page.tsx"
click node_malfetch "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/getDataMAL.ts"
click node_blob "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/syncBlob.ts"
click node_blogdata "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/blog.json"
click node_infodata "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/info.json"
click node_profiledata "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/profile.json"
click node_discdata "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/discography.json"
click node_livedata "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/live_history.json"
click node_animecache "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/anime_db.json"
click node_personcache "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/person_db.json"
click node_seiyuucache "https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/topseiyuu_db.json"

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_layout,node_navigation,node_home,node_blog,node_discography,node_live toneBlue
class node_voicing,node_stats,node_genre,node_animecache,node_personcache,node_seiyuucache,node_blobstore toneAmber
class node_syncui,node_malfetch,node_blob toneMint
class node_blogdata,node_infodata,node_profiledata,node_discdata,node_livedata toneRose
class node_visitor,node_mal,node_embeds toneIndigo
```

## Components

### Fan Pages

- [Site Layout](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/layout.tsx): `app/layout.tsx`
- [Navigation](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/navigation.tsx): `app/navigation.tsx`
- [Profile & Timeline](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/page.tsx): `app/page.tsx`
- [Blog & Embeds](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/blog/page.tsx): `app/blog/page.tsx`
- [Discography](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/discography/page.tsx): `app/discography/page.tsx`
- [Live Concerts](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/discography/live/page.tsx): `app/discography/live/page.tsx`

### Voice Data

- [Voice Roles](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/voicing/page.tsx): `app/voicing/page.tsx`
- [Voice Statistics](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/voicing/stats/page.tsx): `app/voicing/stats/page.tsx`
- [Genre Selector](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/voicing/stats/GenreClient.tsx): `app/voicing/stats/GenreClient.tsx`
- [Anime Cache](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/anime_db.json): `lib/anime_db.json`
- [Person & Roles](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/person_db.json): `lib/person_db.json`
- [Top Seiyuu Cache](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/topseiyuu_db.json): `lib/topseiyuu_db.json`

### Data Sync

- [Sync Console](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/app/sync-data/page.tsx): `app/sync-data/page.tsx`
- [MAL Fetch & Scrape](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/getDataMAL.ts): `lib/getDataMAL.ts`
- [Blob Data Access](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/syncBlob.ts): `lib/syncBlob.ts`

### Local Content

- [Blog Entries](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/blog.json): `lib/blog.json`
- [Home Information](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/info.json): `lib/info.json`
- [Artist Profile](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/profile.json): `lib/profile.json`
- [Discography Data](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/discography.json): `lib/discography.json`
- [Live History Data](https://github.com/mdzakytaqillah/inori-minase-fanspage-indonesia/blob/main/lib/live_history.json): `lib/live_history.json`

### Other components

- **Visitor**
- **Vercel Blob**
- **MyAnimeList**
- **Social Embed Platforms**

## Connections

- Visitor → Navigation: opens site
- Navigation → Profile & Timeline: links to
- Navigation → Blog & Embeds: links to
- Navigation → Discography: links to
- Navigation → Voice Roles: links to
- Site Layout → Navigation: renders
- Profile & Timeline → Home Information: reads
- Profile & Timeline → Artist Profile: reads
- Profile & Timeline → Blob Data Access: requests profile image
- Blog & Embeds → Blog Entries: reads
- Blog & Embeds → Social Embed Platforms: renders embeds
- Discography → Discography Data: reads
- Discography → Artist Profile: reads
- Discography → Live Concerts: links to
- Live Concerts → Live History Data: reads
- Voice Roles → Artist Profile: reads
- Voice Roles → Blob Data Access: loads datasets
- Voice Statistics → Blob Data Access: loads datasets
- Voice Statistics → Artist Profile: reads
- Voice Statistics → Genre Selector: renders selector
- Sync Console → Blob Data Access: reads and writes
- Sync Console → MAL Fetch & Scrape: requests sync data
- MAL Fetch & Scrape → MyAnimeList: fetches and scrapes
- Blob Data Access → Vercel Blob: reads and writes
- Blob Data Access → Anime Cache: downloads backup
- Blob Data Access → Person & Roles: downloads backup
- Blob Data Access → Top Seiyuu Cache: downloads backup
- Sync Console → Anime Cache: local backup result
