# mizumi250/pluffy architecture

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

## Overview

Pluffy turns a tatemono (a single-file application blueprint) into runnable applications across backend and frontend stacks. The central journey is authoring the blueprint, parsing and generating its application resources, then running the result with a selected backend and database. The repository also includes a gallery of generated applications and a separate AI authoring workflow. README statements support the high-level relationships; sampled source confirms parts of the Laravel generation and chat flows, but most backend and export implementations were not inspected.

Main entry points: [`engine/backend`](https://github.com/mizumi250/pluffy/tree/main/engine/backend) (Engine generation), [`tatemonos`](https://github.com/mizumi250/pluffy/tree/main/tatemonos) (Tatemono DSL), [`engine/shared/arkzen/engine-core/parser.ts`](https://github.com/mizumi250/pluffy/blob/main/engine/shared/arkzen/engine-core/parser.ts) (DSL parser), [`engine/backend/laravel/app/Arkzen/Builders`](https://github.com/mizumi250/pluffy/tree/main/engine/backend/laravel/app/Arkzen/Builders) (Laravel builders)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_authoring["Blueprint authoring"]
  node_tatemono["Tatemono DSL"]
end

subgraph group_engine["Generation engine"]
  node_parser["DSL parser<br/>[parser.ts]"]
  node_engine_build["Engine generation"]
  node_laravel_controller["Laravel engine API"]
  node_laravel_builders["Laravel builders"]
  node_export["Project export"]
end

subgraph group_runtime["Application runtime"]
  node_backend_targets["Backend runtimes"]
  node_runtime_features["App services"]
  node_database[("Per-app database<br/>[database.ts]")]
end

subgraph group_targets["App targets"]
  node_web_targets["Web frontends"]
  node_mobile_targets["Mobile frontends"]
  node_desktop_targets["Desktop shells"]
  node_game_targets["Game projects<br/>[generator.js]"]
  node_gallery["Example apps"]
end

subgraph group_ai["AI authoring"]
  node_chat_ui["AI chat app<br/>[app.js]"]
  node_chat_process["Chat coordinator<br/>[main.js]"]
  node_model_service["Model server"]
  node_reviewer["Project reviewer<br/>[pluffy-review.js]"]
  node_scanner["Training scanner<br/>[scan.js]"]
end

node_developer(("App author"))

node_developer -->|"describes app"| node_tatemono
node_tatemono -->|"defines DSL"| node_parser
node_parser -.->|"feeds generation"| node_engine_build
node_engine_build -->|"generates apps"| node_backend_targets
node_engine_build -->|"generates screens"| node_web_targets
node_engine_build -->|"generates screens"| node_mobile_targets
node_engine_build -->|"generates shells"| node_desktop_targets
node_tatemono -->|"game DSL input"| node_game_targets
node_laravel_controller -->|"invokes builders"| node_laravel_builders
node_laravel_builders -->|"generates Laravel app"| node_backend_targets
node_backend_targets -->|"uses per-app store"| node_database
node_backend_targets -->|"provides app services"| node_runtime_features
node_web_targets -->|"showcases examples"| node_gallery
node_engine_build -->|"exports projects"| node_export
node_developer -->|"prompts assistant"| node_chat_ui
node_chat_ui -->|"sends chat"| node_chat_process
node_chat_process -->|"requests completions"| node_model_service
node_developer -->|"requests review"| node_reviewer
node_tatemono -->|"supplies training data"| node_scanner

click node_tatemono "https://github.com/mizumi250/pluffy/tree/main/tatemonos"
click node_parser "https://github.com/mizumi250/pluffy/blob/main/engine/shared/arkzen/engine-core/parser.ts"
click node_engine_build "https://github.com/mizumi250/pluffy/tree/main/engine/backend"
click node_laravel_controller "https://github.com/mizumi250/pluffy/blob/main/engine/backend/laravel/app/Http/Controllers/Arkzen/ArkzenEngineController.php"
click node_laravel_builders "https://github.com/mizumi250/pluffy/tree/main/engine/backend/laravel/app/Arkzen/Builders"
click node_backend_targets "https://github.com/mizumi250/pluffy/tree/main/engine/backend"
click node_runtime_features "https://github.com/mizumi250/pluffy/tree/main/engine/backend/express/src/runtime"
click node_database "https://github.com/mizumi250/pluffy/blob/main/engine/backend/express/src/runtime/database.ts"
click node_web_targets "https://github.com/mizumi250/pluffy/tree/main/engine/frontend"
click node_mobile_targets "https://github.com/mizumi250/pluffy/tree/main/engine/frontend"
click node_desktop_targets "https://github.com/mizumi250/pluffy/tree/main/chat"
click node_game_targets "https://github.com/mizumi250/pluffy/blob/main/engine/game/godot/generator.js"
click node_gallery "https://github.com/mizumi250/pluffy/tree/main/tatemonos"
click node_chat_ui "https://github.com/mizumi250/pluffy/blob/main/chat/renderer/app.js"
click node_chat_process "https://github.com/mizumi250/pluffy/blob/main/chat/main.js"
click node_reviewer "https://github.com/mizumi250/pluffy/blob/main/pluffy-review.js"
click node_scanner "https://github.com/mizumi250/pluffy/blob/main/scan.js"
click node_export "https://github.com/mizumi250/pluffy/tree/main/engine"

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_tatemono toneBlue
class node_parser,node_engine_build,node_laravel_controller,node_laravel_builders,node_export toneAmber
class node_backend_targets,node_runtime_features,node_database toneMint
class node_web_targets,node_mobile_targets,node_desktop_targets,node_game_targets,node_gallery toneRose
class node_chat_ui,node_chat_process,node_model_service,node_reviewer,node_scanner,node_developer toneIndigo
```

## Components

### Blueprint authoring

- [Tatemono DSL](https://github.com/mizumi250/pluffy/tree/main/tatemonos): `tatemonos`

### Generation engine

- [DSL parser](https://github.com/mizumi250/pluffy/blob/main/engine/shared/arkzen/engine-core/parser.ts): `engine/shared/arkzen/engine-core/parser.ts`
- [Engine generation](https://github.com/mizumi250/pluffy/tree/main/engine/backend): `engine/backend`
- [Laravel engine API](https://github.com/mizumi250/pluffy/blob/main/engine/backend/laravel/app/Http/Controllers/Arkzen/ArkzenEngineController.php): `engine/backend/laravel/app/Http/Controllers/Arkzen/ArkzenEngineController.php`
- [Laravel builders](https://github.com/mizumi250/pluffy/tree/main/engine/backend/laravel/app/Arkzen/Builders): `engine/backend/laravel/app/Arkzen/Builders`
- [Project export](https://github.com/mizumi250/pluffy/tree/main/engine): `engine`

### Application runtime

- [Backend runtimes](https://github.com/mizumi250/pluffy/tree/main/engine/backend): `engine/backend`
- [App services](https://github.com/mizumi250/pluffy/tree/main/engine/backend/express/src/runtime): `engine/backend/express/src/runtime`
- [Per-app database](https://github.com/mizumi250/pluffy/blob/main/engine/backend/express/src/runtime/database.ts): `engine/backend/express/src/runtime/database.ts`

### App targets

- [Web frontends](https://github.com/mizumi250/pluffy/tree/main/engine/frontend): `engine/frontend`
- [Mobile frontends](https://github.com/mizumi250/pluffy/tree/main/engine/frontend): `engine/frontend`
- [Desktop shells](https://github.com/mizumi250/pluffy/tree/main/chat): `chat`
- [Game projects](https://github.com/mizumi250/pluffy/blob/main/engine/game/godot/generator.js): `engine/game/godot/generator.js`
- [Example apps](https://github.com/mizumi250/pluffy/tree/main/tatemonos): `tatemonos`

### AI authoring

- [AI chat app](https://github.com/mizumi250/pluffy/blob/main/chat/renderer/app.js): `chat/renderer/app.js`
- [Chat coordinator](https://github.com/mizumi250/pluffy/blob/main/chat/main.js): `chat/main.js`
- **Model server**
- [Project reviewer](https://github.com/mizumi250/pluffy/blob/main/pluffy-review.js): `pluffy-review.js`
- [Training scanner](https://github.com/mizumi250/pluffy/blob/main/scan.js): `scan.js`

### Other components

- **App author**

## Connections

- App author → Tatemono DSL: describes app (evidence: `README.md`)
- Tatemono DSL → DSL parser: defines DSL (evidence: `README.md`)
- DSL parser → Engine generation: feeds generation
- Engine generation → Backend runtimes: generates apps (evidence: `README.md`)
- Engine generation → Web frontends: generates screens (evidence: `README.md`)
- Engine generation → Mobile frontends: generates screens (evidence: `README.md`)
- Engine generation → Desktop shells: generates shells (evidence: `README.md`)
- Tatemono DSL → Game projects: game DSL input (evidence: `README.md`)
- Laravel engine API → Laravel builders: invokes builders (evidence: `engine/backend/laravel/app/Http/Controllers/Arkzen/ArkzenEngineController.php`)
- Laravel builders → Backend runtimes: generates Laravel app (evidence: `engine/backend/laravel-inertia/app/Http/Controllers/Arkzen/ArkzenEngineController.php`)
- Backend runtimes → Per-app database: uses per-app store (evidence: `README.md`)
- Backend runtimes → App services: provides app services (evidence: `README.md`)
- Web frontends → Example apps: showcases examples (evidence: `README.md`)
- Engine generation → Project export: exports projects (evidence: `README.md`)
- App author → AI chat app: prompts assistant (evidence: `README.md`)
- AI chat app → Chat coordinator: sends chat (evidence: `chat/main.js`)
- Chat coordinator → Model server: requests completions (evidence: `README.md`)
- App author → Project reviewer: requests review (evidence: `README.md`)
- Tatemono DSL → Training scanner: supplies training data (evidence: `README.md`)
