# tandoorrecipes/recipes architecture

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

## Overview

Tandoor Recipes is a collaborative recipe-management application. Users browse, search, import, and organize recipes, then plan meals and turn recipes or plans into shopping lists; the application persists household and recipe data and presents it through the web interface. The README also highlights cookbooks, AI assistance, recipe-manager imports, and file sync, so these appear as distinct capabilities. The tree and excerpts support the main Django/Vue structure, but do not expose every endpoint or helper call; uncertain internal wiring is therefore left out.

Main entry points: [`cookbook/views/api.py`](https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/views/api.py) (Django API), [`vue3/src/pages`](https://github.com/tandoorrecipes/recipes/tree/develop/vue3/src/pages) (Product pages), [`cookbook/models.py`](https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/models.py) (Recipe data), [`vue3/src/apps/tandoor/main.ts`](https://github.com/tandoorrecipes/recipes/blob/develop/vue3/src/apps/tandoor/main.ts) (Vue application)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web interface"]
  node_webapp["Vue application<br/>[main.ts]"]
  node_pages["Product pages"]
end

subgraph group_backend["Application backend"]
  node_api["Django API<br/>[api.py]"]
  node_webviews["Web views<br/>[views.py]"]
  node_data[("Recipe data<br/>[models.py]")]
end

subgraph group_recipe["Recipe workflows"]
  node_search["Recipe search<br/>[managers.py]"]
  node_recipe_helpers["Recipe tools"]
  node_import_export["Import and export<br/>[import_export.py]"]
  node_formats["Recipe formats"]
  node_books["Cookbooks<br/>[BooksPage.vue]"]
end

subgraph group_planning["Planning workflows"]
  node_mealplan["Meal planning<br/>[MealPlanPage.vue]"]
  node_shopping["Shopping lists<br/>[shopping_helper.py]"]
end

subgraph group_integrations["External integrations"]
  node_ai["AI assistance<br/>[ai_helper.py]"]
  node_storage["File providers"]
  node_sync["External connectors"]
end

node_user(("User"))
node_recipe_sites(("Recipe websites"))
node_ai_service(("AI service"))
node_cloud_storage(("Dropbox or Nextcloud"))
node_homeassistant(("Home Assistant"))

node_user -->|"uses"| node_webapp
node_webapp -->|"routes to"| node_pages
node_pages -->|"requests data"| node_api
node_pages -->|"requests pages"| node_webviews
node_api -->|"reads and writes"| node_data
node_webviews -->|"reads and writes"| node_data
node_api -->|"queries"| node_search
node_search -->|"searches"| node_data
node_api -->|"uses tools"| node_recipe_helpers
node_user -->|"imports from"| node_recipe_sites
node_api -->|"handles transfers"| node_import_export
node_import_export -->|"parses and exports"| node_formats
node_formats -->|"maps recipe data"| node_data
node_pages -->|"organizes recipes"| node_books
node_books -->|"requests data"| node_api
node_pages -->|"plans meals"| node_mealplan
node_mealplan -->|"saves plans"| node_api
node_pages -->|"manages lists"| node_shopping
node_shopping -->|"reads and writes"| node_data
node_recipe_helpers -.->|"provides assistance"| node_ai
node_ai -.->|"requests AI"| node_ai_service
node_storage -.->|"syncs files"| node_cloud_storage
node_data -.->|"signals changes"| node_sync
node_sync -.->|"dispatches updates"| node_homeassistant

click node_webapp "https://github.com/tandoorrecipes/recipes/blob/develop/vue3/src/apps/tandoor/main.ts"
click node_pages "https://github.com/tandoorrecipes/recipes/tree/develop/vue3/src/pages"
click node_api "https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/views/api.py"
click node_webviews "https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/views/views.py"
click node_data "https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/models.py"
click node_search "https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/managers.py"
click node_recipe_helpers "https://github.com/tandoorrecipes/recipes/tree/develop/cookbook/helper"
click node_import_export "https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/views/import_export.py"
click node_formats "https://github.com/tandoorrecipes/recipes/tree/develop/cookbook/integration"
click node_books "https://github.com/tandoorrecipes/recipes/blob/develop/vue3/src/pages/BooksPage.vue"
click node_mealplan "https://github.com/tandoorrecipes/recipes/blob/develop/vue3/src/pages/MealPlanPage.vue"
click node_shopping "https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/helper/shopping_helper.py"
click node_ai "https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/helper/ai_helper.py"
click node_storage "https://github.com/tandoorrecipes/recipes/tree/develop/cookbook/provider"
click node_sync "https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/connectors/connector_manager.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_webapp,node_pages,node_user toneBlue
class node_api,node_webviews,node_data toneAmber
class node_search,node_recipe_helpers,node_import_export,node_formats,node_books toneMint
class node_mealplan,node_shopping toneRose
class node_ai,node_storage,node_sync,node_recipe_sites,node_ai_service,node_cloud_storage,node_homeassistant toneIndigo
```

## Components

### Web interface

- [Vue application](https://github.com/tandoorrecipes/recipes/blob/develop/vue3/src/apps/tandoor/main.ts): `vue3/src/apps/tandoor/main.ts`
- [Product pages](https://github.com/tandoorrecipes/recipes/tree/develop/vue3/src/pages): `vue3/src/pages`

### Application backend

- [Django API](https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/views/api.py): `cookbook/views/api.py`
- [Web views](https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/views/views.py): `cookbook/views/views.py`
- [Recipe data](https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/models.py): `cookbook/models.py`

### Recipe workflows

- [Recipe search](https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/managers.py): `cookbook/managers.py`
- [Recipe tools](https://github.com/tandoorrecipes/recipes/tree/develop/cookbook/helper): `cookbook/helper`
- [Import and export](https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/views/import_export.py): `cookbook/views/import_export.py`
- [Recipe formats](https://github.com/tandoorrecipes/recipes/tree/develop/cookbook/integration): `cookbook/integration`
- [Cookbooks](https://github.com/tandoorrecipes/recipes/blob/develop/vue3/src/pages/BooksPage.vue): `vue3/src/pages/BooksPage.vue`

### Planning workflows

- [Meal planning](https://github.com/tandoorrecipes/recipes/blob/develop/vue3/src/pages/MealPlanPage.vue): `vue3/src/pages/MealPlanPage.vue`
- [Shopping lists](https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/helper/shopping_helper.py): `cookbook/helper/shopping_helper.py`

### External integrations

- [AI assistance](https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/helper/ai_helper.py): `cookbook/helper/ai_helper.py`
- [File providers](https://github.com/tandoorrecipes/recipes/tree/develop/cookbook/provider): `cookbook/provider`
- [External connectors](https://github.com/tandoorrecipes/recipes/blob/develop/cookbook/connectors/connector_manager.py): `cookbook/connectors/connector_manager.py`

### Other components

- **User**
- **Recipe websites**
- **AI service**
- **Dropbox or Nextcloud**
- **Home Assistant**

## Connections

- User → Vue application: uses
- Vue application → Product pages: routes to
- Product pages → Django API: requests data
- Product pages → Web views: requests pages
- Django API → Recipe data: reads and writes
- Web views → Recipe data: reads and writes
- Django API → Recipe search: queries
- Recipe search → Recipe data: searches
- Django API → Recipe tools: uses tools
- User → Recipe websites: imports from
- Django API → Import and export: handles transfers
- Import and export → Recipe formats: parses and exports
- Recipe formats → Recipe data: maps recipe data
- Product pages → Cookbooks: organizes recipes
- Cookbooks → Django API: requests data
- Product pages → Meal planning: plans meals
- Meal planning → Django API: saves plans
- Product pages → Shopping lists: manages lists
- Shopping lists → Recipe data: reads and writes
- Recipe tools → AI assistance: provides assistance
- AI assistance → AI service: requests AI
- File providers → Dropbox or Nextcloud: syncs files
- Recipe data → External connectors: signals changes
- External connectors → Home Assistant: dispatches updates
