# n0tsaumyashaw/recipe_roulette architecture

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

- Interactive diagram: https://gitdiagram.com/n0tsaumyashaw/recipe_roulette
- Repository: https://github.com/n0tsaumyashaw/recipe_roulette

## Overview

Recipe Roulette is a browser-based Shinchan-themed phone interface for turning leftover ingredients into recipes, then recording and reusing cooked dishes. The main workflow is ingredient selection → local or world-recipe matching → cooking history. The README also documents separate TV, pet-care, notes, messaging, and phone-system features. The sampled JavaScript excerpt shows the world-recipe API calls; other feature links below rely on README descriptions, since most implementation details were not sampled.

Main entry points: [`index.html`](https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/index.html) (SHIN-TEL interface), [`js/script.js`](https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js) (Recipe roulette), [`data/recipes.json`](https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/data/recipes.json) (Local recipes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Phone interface"]
  node_phone["SHIN-TEL interface<br/>[index.html]"]
end

subgraph group_recipes["Recipe workflow"]
  node_roulette["Recipe roulette<br/>[script.js]"]
  node_localrecipes["Local recipes<br/>[recipes.json]"]
  node_worldkitchen["World kitchen<br/>[script.js]"]
end

subgraph group_experiences["Phone experiences"]
  node_tv["Kamen TV<br/>[script.js]"]
  node_shiro["Shiro pet care<br/>[script.js]"]
  node_mom["Mom messenger<br/>[script.js]"]
  node_notes["Notes and doodles<br/>[script.js]"]
  node_phonefeatures["Phone utilities<br/>[script.js]"]
end

subgraph group_state["Local state"]
  node_cookbook[("Cookbook history<br/>[script.js]")]
  node_browserstore[("Browser storage<br/>[script.js]")]
end

subgraph group_external["External services"]
end

node_user(("User"))
node_mealdb["TheMealDB"]

node_user -->|"uses"| node_phone
node_phone -->|"opens"| node_roulette
node_roulette -->|"matches locally"| node_localrecipes
node_roulette -->|"searches globally"| node_worldkitchen
node_worldkitchen -.->|"fetches matches and details"| node_mealdb
node_roulette -->|"records cooked dishes"| node_cookbook
node_cookbook -->|"persists history"| node_browserstore
node_tv -->|"reads latest dish"| node_cookbook
node_shiro -->|"feeds from latest dish"| node_cookbook
node_phone -->|"opens"| node_tv
node_phone -->|"opens"| node_shiro
node_phone -->|"opens"| node_mom
node_phone -->|"opens"| node_notes
node_phone -->|"opens"| node_phonefeatures

click node_phone "https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/index.html"
click node_roulette "https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js"
click node_localrecipes "https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/data/recipes.json"
click node_worldkitchen "https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js"
click node_cookbook "https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js"
click node_tv "https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js"
click node_shiro "https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js"
click node_mom "https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js"
click node_notes "https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js"
click node_phonefeatures "https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js"
click node_browserstore "https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js"

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_phone,node_user toneBlue
class node_roulette,node_localrecipes,node_worldkitchen toneAmber
class node_tv,node_shiro,node_mom,node_notes,node_phonefeatures toneMint
class node_cookbook,node_browserstore toneRose
class node_mealdb toneIndigo
```

## Components

### Phone interface

- [SHIN-TEL interface](https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/index.html): `index.html`

### Recipe workflow

- [Recipe roulette](https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js): `js/script.js`
- [Local recipes](https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/data/recipes.json): `data/recipes.json`
- [World kitchen](https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js): `js/script.js`

### Phone experiences

- [Kamen TV](https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js): `js/script.js`
- [Shiro pet care](https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js): `js/script.js`
- [Mom messenger](https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js): `js/script.js`
- [Notes and doodles](https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js): `js/script.js`
- [Phone utilities](https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js): `js/script.js`

### Local state

- [Cookbook history](https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js): `js/script.js`
- [Browser storage](https://github.com/n0tsaumyashaw/recipe_roulette/blob/main/js/script.js): `js/script.js`

### Other components

- **User**
- **TheMealDB**

## Connections

- User → SHIN-TEL interface: uses (evidence: `README.md`)
- SHIN-TEL interface → Recipe roulette: opens (evidence: `README.md`)
- Recipe roulette → Local recipes: matches locally (evidence: `README.md`)
- Recipe roulette → World kitchen: searches globally (evidence: `README.md`)
- World kitchen → TheMealDB: fetches matches and details (evidence: `js/script.js`)
- Recipe roulette → Cookbook history: records cooked dishes (evidence: `README.md`)
- Cookbook history → Browser storage: persists history (evidence: `README.md`)
- Kamen TV → Cookbook history: reads latest dish (evidence: `README.md`)
- Shiro pet care → Cookbook history: feeds from latest dish (evidence: `README.md`)
- SHIN-TEL interface → Kamen TV: opens (evidence: `README.md`)
- SHIN-TEL interface → Shiro pet care: opens (evidence: `README.md`)
- SHIN-TEL interface → Mom messenger: opens (evidence: `README.md`)
- SHIN-TEL interface → Notes and doodles: opens (evidence: `README.md`)
- SHIN-TEL interface → Phone utilities: opens (evidence: `README.md`)
