# afyuda6/mustakuusi-next architecture

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

- Interactive diagram: https://gitdiagram.com/afyuda6/mustakuusi-next
- Repository: https://github.com/afyuda6/mustakuusi-next

## Overview

Mustakuusi is a bilingual Indonesian/English showcase for puzzle, quiz, educational, and casual games. Visitors browse the home-page game and character catalogs, filter games by keyword or category, and open game or character pages for descriptions, related content, screenshots, and download links; per-game privacy policies are also available. The route excerpts show the home, game-detail, character-detail, and Indonesian privacy flows. Other component internals were not sampled, so links reflect only evidenced route composition and data use.

Main entry points: [`app/(id)/page.tsx`](https://github.com/afyuda6/mustakuusi-next/blob/master/app/(id)/page.tsx) (Indonesian home), [`app/en/page.tsx`](https://github.com/afyuda6/mustakuusi-next/blob/master/app/en/page.tsx) (English home), [`app/(id)/[gameId]/page.tsx`](https://github.com/afyuda6/mustakuusi-next/blob/master/app/(id)/%5BgameId%5D/page.tsx) (Indonesian game page), [`app/en/[gameId]/page.tsx`](https://github.com/afyuda6/mustakuusi-next/blob/master/app/en/%5BgameId%5D/page.tsx) (English game page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_routes["Pages and routes"]
  node_idhome["Indonesian home<br/>[page.tsx]"]
  node_enhome["English home<br/>[page.tsx]"]
  node_iddetail["Indonesian game page<br/>[page.tsx]"]
  node_endetail["English game page<br/>[page.tsx]"]
  node_idcharacter["Indonesian character page<br/>[page.tsx]"]
  node_encharacter["English character page<br/>[page.tsx]"]
  node_idprivacy["Indonesian privacy page<br/>[page.tsx]"]
end

subgraph group_content["Content components"]
  node_hero["Hero section<br/>[Hero.tsx]"]
  node_about["Game description<br/>[About.tsx]"]
  node_games["Game catalog<br/>[Games.tsx]"]
  node_characters["Character catalog<br/>[Characters.tsx]"]
  node_screenshots["Game screenshots<br/>[Screenshots.tsx]"]
  node_faq["FAQ section<br/>[FAQ.tsx]"]
  node_privacy["Privacy policy<br/>[Privacy.tsx]"]
  node_contact["Contact section<br/>[Contact.tsx]"]
end

subgraph group_catalog["Catalog data"]
  node_gamesdata["Game records<br/>[games.json]"]
  node_charactersdata["Character records<br/>[characters.json]"]
  node_faqdata["FAQ records<br/>[faq.json]"]
  node_categoriesdata["Game categories<br/>[categories.json]"]
end

subgraph group_shell["Shared site shell"]
  node_root["Root layout<br/>[layout.tsx]"]
  node_marquee["Marquee<br/>[Marquee.tsx]"]
  node_footer["Footer<br/>[Footer.tsx]"]
end

node_visitor(("Site visitor"))
node_ads["Google ads script"]

node_visitor -->|"opens site"| node_root
node_root -->|"renders"| node_marquee
node_root -->|"renders"| node_footer
node_root -.->|"loads script"| node_ads
node_visitor -->|"opens route"| node_idhome
node_visitor -->|"opens route"| node_enhome
node_visitor -->|"opens route"| node_iddetail
node_visitor -->|"opens route"| node_endetail
node_visitor -->|"opens route"| node_idcharacter
node_visitor -->|"opens route"| node_encharacter
node_visitor -->|"opens route"| node_idprivacy
node_idhome -->|"renders catalog"| node_games
node_idhome -->|"renders catalog"| node_characters
node_idhome -->|"renders section"| node_faq
node_idhome -->|"renders section"| node_contact
node_idhome -->|"reads"| node_gamesdata
node_idhome -->|"reads"| node_charactersdata
node_idhome -->|"reads"| node_faqdata
node_enhome -->|"renders catalog"| node_games
node_enhome -->|"renders catalog"| node_characters
node_enhome -->|"renders section"| node_faq
node_enhome -->|"renders section"| node_contact
node_enhome -->|"reads"| node_gamesdata
node_enhome -->|"reads"| node_charactersdata
node_enhome -->|"reads"| node_faqdata
node_iddetail -->|"renders"| node_hero
node_iddetail -->|"renders"| node_about
node_iddetail -->|"renders related"| node_characters
node_iddetail -->|"renders"| node_screenshots
node_iddetail -->|"renders"| node_contact
node_iddetail -->|"reads"| node_gamesdata
node_iddetail -->|"reads"| node_charactersdata
node_endetail -->|"renders"| node_hero
node_endetail -->|"renders"| node_about
node_endetail -->|"renders related"| node_characters
node_endetail -->|"renders"| node_screenshots
node_endetail -->|"renders"| node_contact
node_endetail -->|"reads"| node_gamesdata
node_endetail -->|"reads"| node_charactersdata
node_idcharacter -->|"renders"| node_hero
node_idcharacter -->|"renders related"| node_games
node_idcharacter -->|"renders"| node_contact
node_idcharacter -->|"reads"| node_charactersdata
node_idcharacter -->|"reads"| node_gamesdata
node_encharacter -->|"renders"| node_hero
node_encharacter -->|"renders related"| node_games
node_encharacter -->|"renders"| node_contact
node_encharacter -->|"reads"| node_charactersdata

click node_root "https://github.com/afyuda6/mustakuusi-next/blob/master/app/layout.tsx"
click node_idhome "https://github.com/afyuda6/mustakuusi-next/blob/master/app/(id)/page.tsx"
click node_enhome "https://github.com/afyuda6/mustakuusi-next/blob/master/app/en/page.tsx"
click node_iddetail "https://github.com/afyuda6/mustakuusi-next/blob/master/app/(id)/%5BgameId%5D/page.tsx"
click node_endetail "https://github.com/afyuda6/mustakuusi-next/blob/master/app/en/%5BgameId%5D/page.tsx"
click node_idcharacter "https://github.com/afyuda6/mustakuusi-next/blob/master/app/(id)/characters/%5Bid%5D/page.tsx"
click node_encharacter "https://github.com/afyuda6/mustakuusi-next/blob/master/app/en/characters/%5Bid%5D/page.tsx"
click node_idprivacy "https://github.com/afyuda6/mustakuusi-next/blob/master/app/(id)/privacy-policy/%5Bid%5D/page.tsx"
click node_hero "https://github.com/afyuda6/mustakuusi-next/blob/master/components/Hero.tsx"
click node_about "https://github.com/afyuda6/mustakuusi-next/blob/master/components/About.tsx"
click node_games "https://github.com/afyuda6/mustakuusi-next/blob/master/components/Games.tsx"
click node_characters "https://github.com/afyuda6/mustakuusi-next/blob/master/components/Characters.tsx"
click node_screenshots "https://github.com/afyuda6/mustakuusi-next/blob/master/components/Screenshots.tsx"
click node_faq "https://github.com/afyuda6/mustakuusi-next/blob/master/components/FAQ.tsx"
click node_privacy "https://github.com/afyuda6/mustakuusi-next/blob/master/components/Privacy.tsx"
click node_contact "https://github.com/afyuda6/mustakuusi-next/blob/master/components/Contact.tsx"
click node_gamesdata "https://github.com/afyuda6/mustakuusi-next/blob/master/public/data/games.json"
click node_charactersdata "https://github.com/afyuda6/mustakuusi-next/blob/master/public/data/characters.json"
click node_faqdata "https://github.com/afyuda6/mustakuusi-next/blob/master/public/data/faq.json"
click node_categoriesdata "https://github.com/afyuda6/mustakuusi-next/blob/master/public/data/categories.json"
click node_marquee "https://github.com/afyuda6/mustakuusi-next/blob/master/components/Marquee.tsx"
click node_footer "https://github.com/afyuda6/mustakuusi-next/blob/master/components/Footer.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_idhome,node_enhome,node_iddetail,node_endetail,node_idcharacter,node_encharacter,node_idprivacy toneBlue
class node_hero,node_about,node_games,node_characters,node_screenshots,node_faq,node_privacy,node_contact toneAmber
class node_gamesdata,node_charactersdata,node_faqdata,node_categoriesdata toneMint
class node_root,node_marquee,node_footer toneRose
class node_visitor,node_ads toneIndigo
```

## Components

### Pages and routes

- [Indonesian home](https://github.com/afyuda6/mustakuusi-next/blob/master/app/(id)/page.tsx): `app/(id)/page.tsx`
- [English home](https://github.com/afyuda6/mustakuusi-next/blob/master/app/en/page.tsx): `app/en/page.tsx`
- [Indonesian game page](https://github.com/afyuda6/mustakuusi-next/blob/master/app/(id)/%5BgameId%5D/page.tsx): `app/(id)/[gameId]/page.tsx`
- [English game page](https://github.com/afyuda6/mustakuusi-next/blob/master/app/en/%5BgameId%5D/page.tsx): `app/en/[gameId]/page.tsx`
- [Indonesian character page](https://github.com/afyuda6/mustakuusi-next/blob/master/app/(id)/characters/%5Bid%5D/page.tsx): `app/(id)/characters/[id]/page.tsx`
- [English character page](https://github.com/afyuda6/mustakuusi-next/blob/master/app/en/characters/%5Bid%5D/page.tsx): `app/en/characters/[id]/page.tsx`
- [Indonesian privacy page](https://github.com/afyuda6/mustakuusi-next/blob/master/app/(id)/privacy-policy/%5Bid%5D/page.tsx): `app/(id)/privacy-policy/[id]/page.tsx`

### Content components

- [Hero section](https://github.com/afyuda6/mustakuusi-next/blob/master/components/Hero.tsx): `components/Hero.tsx`
- [Game description](https://github.com/afyuda6/mustakuusi-next/blob/master/components/About.tsx): `components/About.tsx`
- [Game catalog](https://github.com/afyuda6/mustakuusi-next/blob/master/components/Games.tsx): `components/Games.tsx`
- [Character catalog](https://github.com/afyuda6/mustakuusi-next/blob/master/components/Characters.tsx): `components/Characters.tsx`
- [Game screenshots](https://github.com/afyuda6/mustakuusi-next/blob/master/components/Screenshots.tsx): `components/Screenshots.tsx`
- [FAQ section](https://github.com/afyuda6/mustakuusi-next/blob/master/components/FAQ.tsx): `components/FAQ.tsx`
- [Privacy policy](https://github.com/afyuda6/mustakuusi-next/blob/master/components/Privacy.tsx): `components/Privacy.tsx`
- [Contact section](https://github.com/afyuda6/mustakuusi-next/blob/master/components/Contact.tsx): `components/Contact.tsx`

### Catalog data

- [Game records](https://github.com/afyuda6/mustakuusi-next/blob/master/public/data/games.json): `public/data/games.json`
- [Character records](https://github.com/afyuda6/mustakuusi-next/blob/master/public/data/characters.json): `public/data/characters.json`
- [FAQ records](https://github.com/afyuda6/mustakuusi-next/blob/master/public/data/faq.json): `public/data/faq.json`
- [Game categories](https://github.com/afyuda6/mustakuusi-next/blob/master/public/data/categories.json): `public/data/categories.json`

### Shared site shell

- [Root layout](https://github.com/afyuda6/mustakuusi-next/blob/master/app/layout.tsx): `app/layout.tsx`
- [Marquee](https://github.com/afyuda6/mustakuusi-next/blob/master/components/Marquee.tsx): `components/Marquee.tsx`
- [Footer](https://github.com/afyuda6/mustakuusi-next/blob/master/components/Footer.tsx): `components/Footer.tsx`

### Other components

- **Site visitor**
- **Google ads script**

## Connections

- Site visitor → Root layout: opens site
- Root layout → Marquee: renders
- Root layout → Footer: renders
- Root layout → Google ads script: loads script
- Site visitor → Indonesian home: opens route
- Site visitor → English home: opens route
- Site visitor → Indonesian game page: opens route
- Site visitor → English game page: opens route
- Site visitor → Indonesian character page: opens route
- Site visitor → English character page: opens route
- Site visitor → Indonesian privacy page: opens route
- Indonesian home → Game catalog: renders catalog
- Indonesian home → Character catalog: renders catalog
- Indonesian home → FAQ section: renders section
- Indonesian home → Contact section: renders section
- Indonesian home → Game records: reads
- Indonesian home → Character records: reads
- Indonesian home → FAQ records: reads
- English home → Game catalog: renders catalog
- English home → Character catalog: renders catalog
- English home → FAQ section: renders section
- English home → Contact section: renders section
- English home → Game records: reads
- English home → Character records: reads
- English home → FAQ records: reads
- Indonesian game page → Hero section: renders
- Indonesian game page → Game description: renders
- Indonesian game page → Character catalog: renders related
- Indonesian game page → Game screenshots: renders
- Indonesian game page → Contact section: renders
- Indonesian game page → Game records: reads
- Indonesian game page → Character records: reads
- English game page → Hero section: renders
- English game page → Game description: renders
- English game page → Character catalog: renders related
- English game page → Game screenshots: renders
- English game page → Contact section: renders
- English game page → Game records: reads
- English game page → Character records: reads
- Indonesian character page → Hero section: renders
- Indonesian character page → Game catalog: renders related
- Indonesian character page → Contact section: renders
- Indonesian character page → Character records: reads
- Indonesian character page → Game records: reads
- English character page → Hero section: renders
- English character page → Game catalog: renders related
- English character page → Contact section: renders
- English character page → Character records: reads
