# mikekuriger/chef architecture

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

- Interactive diagram: https://gitdiagram.com/mikekuriger/chef
- Repository: https://github.com/mikekuriger/chef

## Overview

This appears to be a cross-platform Flutter recipe and pantry app, with account screens, recipe management, pantry tracking, and a recipe journal. The likely user workflow is to enter the app, manage pantry items and recipes, and consult or edit recipe journals. The README is empty and no Dart source was excerpted, so those product capabilities are inferred from filenames; their connections are shown as unverified. The sampled native files document platform startup, not the app’s domain logic.

Main entry points: [`lib/screens/manage_recipes_screen.dart`](https://github.com/mikekuriger/chef/blob/main/lib/screens/manage_recipes_screen.dart) (Recipe management), [`lib/screens/dashboard_screen.dart`](https://github.com/mikekuriger/chef/blob/main/lib/screens/dashboard_screen.dart) (Dashboard), [`lib/main.dart`](https://github.com/mikekuriger/chef/blob/main/lib/main.dart) (Flutter entry), [`lib/screens/login_screen.dart`](https://github.com/mikekuriger/chef/blob/main/lib/screens/login_screen.dart) (Account access)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App experience"]
  node_entry["Flutter entry<br/>[main.dart]"]
  node_auth["Account access<br/>[login_screen.dart]"]
  node_register["Registration"]
  node_dashboard["Dashboard"]
  node_profile["Profile and settings"]
end

subgraph group_recipes["Recipes and journal"]
  node_recipe_manage["Recipe management"]
  node_recipe_edit["Recipe editing"]
  node_recipe_detail["Recipe details"]
  node_recipe_journal["Recipe journal"]
  node_journal_edit["Journal editing"]
  node_recipe_state["Recipe list state"]
  node_recipe_repo["Recipe repository"]
  node_recipe_dao["Recipe data access<br/>[recipe_dao.dart]"]
end

subgraph group_pantry["Pantry management"]
  node_pantry_screen["Pantry screen<br/>[pantry_screen.dart]"]
  node_pantry_state["Pantry state<br/>[pantry_model.dart]"]
  node_pantry_repo["Pantry repository"]
  node_pantry_dao["Pantry data access<br/>[pantry_dao.dart]"]
end

subgraph group_services["Data and services"]
  node_api["API service<br/>[api_service.dart]"]
  node_http["HTTP client<br/>[dio_client.dart]"]
  node_image_store["Image storage<br/>[image_store.dart]"]
  node_pdf["Recipe PDF<br/>[recipe_pdf.dart]"]
  node_quota["Usage quota<br/>[quota.py]"]
end

node_user(("User"))

node_user -.->|"starts app"| node_entry
node_entry -.->|"opens screen"| node_auth
node_entry -.->|"opens screen"| node_dashboard
node_auth -.->|"offers registration"| node_register
node_dashboard -.->|"opens pantry"| node_pantry_screen
node_dashboard -.->|"opens recipes"| node_recipe_manage
node_recipe_manage -.->|"edits recipes"| node_recipe_edit
node_recipe_manage -.->|"opens details"| node_recipe_detail
node_recipe_detail -.->|"opens journal"| node_recipe_journal
node_recipe_journal -.->|"edits journal"| node_journal_edit
node_pantry_screen -.->|"uses state"| node_pantry_state
node_pantry_state -.->|"uses repository"| node_pantry_repo
node_pantry_repo -.->|"accesses data"| node_pantry_dao
node_recipe_manage -.->|"uses state"| node_recipe_state
node_recipe_state -.->|"uses repository"| node_recipe_repo
node_recipe_repo -.->|"accesses data"| node_recipe_dao
node_profile -.->|"returns to"| node_dashboard

click node_entry "https://github.com/mikekuriger/chef/blob/main/lib/main.dart"
click node_auth "https://github.com/mikekuriger/chef/blob/main/lib/screens/login_screen.dart"
click node_register "https://github.com/mikekuriger/chef/blob/main/lib/screens/register_screen.dart"
click node_dashboard "https://github.com/mikekuriger/chef/blob/main/lib/screens/dashboard_screen.dart"
click node_profile "https://github.com/mikekuriger/chef/blob/main/lib/screens/settings_screen.dart"
click node_recipe_manage "https://github.com/mikekuriger/chef/blob/main/lib/screens/manage_recipes_screen.dart"
click node_recipe_edit "https://github.com/mikekuriger/chef/blob/main/lib/screens/recipe_edit_screen.dart"
click node_recipe_detail "https://github.com/mikekuriger/chef/blob/main/lib/screens/recipe_detail_screen.dart"
click node_recipe_journal "https://github.com/mikekuriger/chef/blob/main/lib/screens/recipe_journal_screen.dart"
click node_journal_edit "https://github.com/mikekuriger/chef/blob/main/lib/screens/recipe_journal_editor_screen.dart"
click node_pantry_screen "https://github.com/mikekuriger/chef/blob/main/lib/screens/pantry_screen.dart"
click node_pantry_state "https://github.com/mikekuriger/chef/blob/main/lib/state/pantry_model.dart"
click node_pantry_repo "https://github.com/mikekuriger/chef/blob/main/lib/repository/pantry_repository.dart"
click node_pantry_dao "https://github.com/mikekuriger/chef/blob/main/lib/data/pantry_dao.dart"
click node_recipe_state "https://github.com/mikekuriger/chef/blob/main/lib/state/recipe_list_model.dart"
click node_recipe_repo "https://github.com/mikekuriger/chef/blob/main/lib/repository/recipe_repository.dart"
click node_recipe_dao "https://github.com/mikekuriger/chef/blob/main/lib/data/recipe_dao.dart"
click node_api "https://github.com/mikekuriger/chef/blob/main/lib/services/api_service.dart"
click node_http "https://github.com/mikekuriger/chef/blob/main/lib/services/dio_client.dart"
click node_image_store "https://github.com/mikekuriger/chef/blob/main/lib/services/image_store.dart"
click node_pdf "https://github.com/mikekuriger/chef/blob/main/lib/utils/recipe_pdf.dart"
click node_quota "https://github.com/mikekuriger/chef/blob/main/quota.py"

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_entry,node_auth,node_register,node_dashboard,node_profile,node_user toneBlue
class node_recipe_manage,node_recipe_edit,node_recipe_detail,node_recipe_journal,node_journal_edit,node_recipe_state,node_recipe_repo,node_recipe_dao toneAmber
class node_pantry_screen,node_pantry_state,node_pantry_repo,node_pantry_dao toneMint
class node_api,node_http,node_image_store,node_pdf,node_quota toneRose
```

## Components

### App experience

- [Flutter entry](https://github.com/mikekuriger/chef/blob/main/lib/main.dart): `lib/main.dart`
- [Account access](https://github.com/mikekuriger/chef/blob/main/lib/screens/login_screen.dart): `lib/screens/login_screen.dart`
- [Registration](https://github.com/mikekuriger/chef/blob/main/lib/screens/register_screen.dart): `lib/screens/register_screen.dart`
- [Dashboard](https://github.com/mikekuriger/chef/blob/main/lib/screens/dashboard_screen.dart): `lib/screens/dashboard_screen.dart`
- [Profile and settings](https://github.com/mikekuriger/chef/blob/main/lib/screens/settings_screen.dart): `lib/screens/settings_screen.dart`

### Recipes and journal

- [Recipe management](https://github.com/mikekuriger/chef/blob/main/lib/screens/manage_recipes_screen.dart): `lib/screens/manage_recipes_screen.dart`
- [Recipe editing](https://github.com/mikekuriger/chef/blob/main/lib/screens/recipe_edit_screen.dart): `lib/screens/recipe_edit_screen.dart`
- [Recipe details](https://github.com/mikekuriger/chef/blob/main/lib/screens/recipe_detail_screen.dart): `lib/screens/recipe_detail_screen.dart`
- [Recipe journal](https://github.com/mikekuriger/chef/blob/main/lib/screens/recipe_journal_screen.dart): `lib/screens/recipe_journal_screen.dart`
- [Journal editing](https://github.com/mikekuriger/chef/blob/main/lib/screens/recipe_journal_editor_screen.dart): `lib/screens/recipe_journal_editor_screen.dart`
- [Recipe list state](https://github.com/mikekuriger/chef/blob/main/lib/state/recipe_list_model.dart): `lib/state/recipe_list_model.dart`
- [Recipe repository](https://github.com/mikekuriger/chef/blob/main/lib/repository/recipe_repository.dart): `lib/repository/recipe_repository.dart`
- [Recipe data access](https://github.com/mikekuriger/chef/blob/main/lib/data/recipe_dao.dart): `lib/data/recipe_dao.dart`

### Pantry management

- [Pantry screen](https://github.com/mikekuriger/chef/blob/main/lib/screens/pantry_screen.dart): `lib/screens/pantry_screen.dart`
- [Pantry state](https://github.com/mikekuriger/chef/blob/main/lib/state/pantry_model.dart): `lib/state/pantry_model.dart`
- [Pantry repository](https://github.com/mikekuriger/chef/blob/main/lib/repository/pantry_repository.dart): `lib/repository/pantry_repository.dart`
- [Pantry data access](https://github.com/mikekuriger/chef/blob/main/lib/data/pantry_dao.dart): `lib/data/pantry_dao.dart`

### Data and services

- [API service](https://github.com/mikekuriger/chef/blob/main/lib/services/api_service.dart): `lib/services/api_service.dart`
- [HTTP client](https://github.com/mikekuriger/chef/blob/main/lib/services/dio_client.dart): `lib/services/dio_client.dart`
- [Image storage](https://github.com/mikekuriger/chef/blob/main/lib/services/image_store.dart): `lib/services/image_store.dart`
- [Recipe PDF](https://github.com/mikekuriger/chef/blob/main/lib/utils/recipe_pdf.dart): `lib/utils/recipe_pdf.dart`
- [Usage quota](https://github.com/mikekuriger/chef/blob/main/quota.py): `quota.py`

### Other components

- **User**

## Connections

- User → Flutter entry: starts app
- Flutter entry → Account access: opens screen
- Flutter entry → Dashboard: opens screen
- Account access → Registration: offers registration
- Dashboard → Pantry screen: opens pantry
- Dashboard → Recipe management: opens recipes
- Recipe management → Recipe editing: edits recipes
- Recipe management → Recipe details: opens details
- Recipe details → Recipe journal: opens journal
- Recipe journal → Journal editing: edits journal
- Pantry screen → Pantry state: uses state
- Pantry state → Pantry repository: uses repository
- Pantry repository → Pantry data access: accesses data
- Recipe management → Recipe list state: uses state
- Recipe list state → Recipe repository: uses repository
- Recipe repository → Recipe data access: accesses data
- Profile and settings → Dashboard: returns to
