# puneet-swarup/house-of-desserts architecture

> Architecture diagram of the GitHub repository puneet-swarup/house-of-desserts, 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/puneet-swarup/house-of-desserts
- Repository: https://github.com/puneet-swarup/house-of-desserts

## Overview

House of Desserts is a self-hosted bakery operations app. Staff use its web interface to manage customers and orders, move orders through fulfillment while tracking payments, consume recipe ingredients into a stock ledger, and produce invoices and business reports. Product and recipe management, the Today production/dispatch view, audit history, and customer messaging are also major capabilities. The map uses documented responsibilities and sampled entry-point wiring; several router-to-service links are shown from module responsibilities rather than inspected route bodies.

Main entry points: [`app/main.py`](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/main.py) (FastAPI app), [`app/database.py`](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/database.py) (SQLAlchemy database), [`app/routers/orders.py`](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/orders.py) (Order routes), [`app/services/invoice_service.py`](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/invoice_service.py) (Invoice snapshots)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_main["FastAPI app<br/>[main.py]"]
  node_db[("SQLAlchemy database<br/>[database.py]")]
  node_order_routes["Order routes<br/>[orders.py]"]
  node_today_routes["Today routes<br/>[today.py]"]
  node_customer_routes["Customer routes<br/>[customers.py]"]
  node_product_routes["Product routes<br/>[products.py]"]
  node_ingredient_routes["Ingredient routes<br/>[ingredients.py]"]
  node_invoice_routes["Invoice routes<br/>[invoices.py]"]
  node_report_routes["Report routes<br/>[reports.py]"]
  node_export_routes["Export routes<br/>[export.py]"]
  node_audit_routes["Audit routes<br/>[audit.py]"]
end

subgraph group_commerce["Orders and products"]
  node_order_service["Order lifecycle<br/>[order_service.py]"]
  node_customer_service["Customer records"]
  node_product_service["Product catalog<br/>[product_service.py]"]
end

subgraph group_operations["Production and stock"]
  node_recipe_service["Recipe BOM<br/>[recipe_service.py]"]
  node_inventory_service["Stock ledger"]
  node_today_service["Dispatch planning<br/>[today_service.py]"]
end

subgraph group_documents["Finance and records"]
  node_invoice_service["Invoice snapshots<br/>[invoice_service.py]"]
  node_reports_service["Monthly reports<br/>[reports_service.py]"]
  node_export_service["Data export<br/>[export_service.py]"]
  node_audit_service["Audit history<br/>[audit_service.py]"]
end

subgraph group_integrations["External outputs"]
  node_whatsapp_service["WhatsApp links"]
  node_printer(("Thermal printer"))
  node_printer_util["Receipt printing<br/>[escpos_printer.py]"]
end

node_staff(("Bakery staff"))

node_staff -->|"uses"| node_main
node_main -->|"registers"| node_order_routes
node_main -->|"registers"| node_today_routes
node_main -->|"registers"| node_customer_routes
node_main -->|"registers"| node_product_routes
node_main -->|"registers"| node_ingredient_routes
node_main -->|"registers"| node_invoice_routes
node_main -->|"registers"| node_report_routes
node_main -->|"registers"| node_export_routes
node_main -->|"registers"| node_audit_routes
node_order_routes -->|"handles orders"| node_order_service
node_customer_routes -->|"manages customers"| node_customer_service
node_product_routes -->|"manages products"| node_product_service
node_ingredient_routes -->|"manages stock"| node_inventory_service
node_order_routes -->|"starts consumption"| node_inventory_service
node_order_routes -->|"checks shortages"| node_recipe_service
node_today_routes -->|"builds today view"| node_today_service
node_invoice_routes -->|"creates snapshots"| node_invoice_service
node_report_routes -->|"builds reports"| node_reports_service
node_export_routes -->|"exports data"| node_export_service
node_audit_routes -->|"reads audit"| node_audit_service
node_order_service -->|"reads and writes"| node_db
node_customer_service -->|"reads and writes"| node_db
node_product_service -->|"reads and writes"| node_db
node_recipe_service -->|"reads and writes"| node_db
node_inventory_service -->|"records movements"| node_db
node_today_service -->|"reads orders and stock"| node_db
node_invoice_service -->|"stores snapshots"| node_db
node_reports_service -->|"reads business data"| node_db
node_export_service -->|"reads business data"| node_db
node_audit_service -->|"reads and writes"| node_db
node_order_routes -.->|"offers messaging"| node_whatsapp_service
node_invoice_service -->|"prints snapshot"| node_printer_util
node_printer_util -->|"sends receipt"| node_printer

click node_main "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/main.py"
click node_db "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/database.py"
click node_order_routes "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/orders.py"
click node_today_routes "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/today.py"
click node_customer_routes "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/customers.py"
click node_product_routes "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/products.py"
click node_ingredient_routes "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/ingredients.py"
click node_invoice_routes "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/invoices.py"
click node_report_routes "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/reports.py"
click node_export_routes "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/export.py"
click node_audit_routes "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/audit.py"
click node_order_service "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/order_service.py"
click node_customer_service "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/customer_service.py"
click node_product_service "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/product_service.py"
click node_recipe_service "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/recipe_service.py"
click node_inventory_service "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/inventory_service.py"
click node_today_service "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/today_service.py"
click node_invoice_service "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/invoice_service.py"
click node_reports_service "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/reports_service.py"
click node_export_service "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/export_service.py"
click node_audit_service "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/audit_service.py"
click node_whatsapp_service "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/whatsapp_service.py"
click node_printer_util "https://github.com/puneet-swarup/house-of-desserts/blob/main/app/utils/escpos_printer.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_main,node_db,node_order_routes,node_today_routes,node_customer_routes,node_product_routes,node_ingredient_routes,node_invoice_routes,node_report_routes,node_export_routes,node_audit_routes toneBlue
class node_order_service,node_customer_service,node_product_service toneAmber
class node_recipe_service,node_inventory_service,node_today_service toneMint
class node_invoice_service,node_reports_service,node_export_service,node_audit_service toneRose
class node_whatsapp_service,node_printer,node_printer_util,node_staff toneIndigo
```

## Components

### Web application

- [FastAPI app](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/main.py): `app/main.py`
- [SQLAlchemy database](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/database.py): `app/database.py`
- [Order routes](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/orders.py): `app/routers/orders.py`
- [Today routes](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/today.py): `app/routers/today.py`
- [Customer routes](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/customers.py): `app/routers/customers.py`
- [Product routes](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/products.py): `app/routers/products.py`
- [Ingredient routes](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/ingredients.py): `app/routers/ingredients.py`
- [Invoice routes](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/invoices.py): `app/routers/invoices.py`
- [Report routes](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/reports.py): `app/routers/reports.py`
- [Export routes](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/export.py): `app/routers/export.py`
- [Audit routes](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/routers/audit.py): `app/routers/audit.py`

### Orders and products

- [Order lifecycle](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/order_service.py): `app/services/order_service.py`
- [Customer records](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/customer_service.py): `app/services/customer_service.py`
- [Product catalog](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/product_service.py): `app/services/product_service.py`

### Production and stock

- [Recipe BOM](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/recipe_service.py): `app/services/recipe_service.py`
- [Stock ledger](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/inventory_service.py): `app/services/inventory_service.py`
- [Dispatch planning](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/today_service.py): `app/services/today_service.py`

### Finance and records

- [Invoice snapshots](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/invoice_service.py): `app/services/invoice_service.py`
- [Monthly reports](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/reports_service.py): `app/services/reports_service.py`
- [Data export](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/export_service.py): `app/services/export_service.py`
- [Audit history](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/audit_service.py): `app/services/audit_service.py`

### External outputs

- [WhatsApp links](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/services/whatsapp_service.py): `app/services/whatsapp_service.py`
- **Thermal printer**
- [Receipt printing](https://github.com/puneet-swarup/house-of-desserts/blob/main/app/utils/escpos_printer.py): `app/utils/escpos_printer.py`

### Other components

- **Bakery staff**

## Connections

- Bakery staff → FastAPI app: uses
- FastAPI app → Order routes: registers
- FastAPI app → Today routes: registers
- FastAPI app → Customer routes: registers
- FastAPI app → Product routes: registers
- FastAPI app → Ingredient routes: registers
- FastAPI app → Invoice routes: registers
- FastAPI app → Report routes: registers
- FastAPI app → Export routes: registers
- FastAPI app → Audit routes: registers
- Order routes → Order lifecycle: handles orders
- Customer routes → Customer records: manages customers
- Product routes → Product catalog: manages products
- Ingredient routes → Stock ledger: manages stock
- Order routes → Stock ledger: starts consumption
- Order routes → Recipe BOM: checks shortages
- Today routes → Dispatch planning: builds today view
- Invoice routes → Invoice snapshots: creates snapshots
- Report routes → Monthly reports: builds reports
- Export routes → Data export: exports data
- Audit routes → Audit history: reads audit
- Order lifecycle → SQLAlchemy database: reads and writes
- Customer records → SQLAlchemy database: reads and writes
- Product catalog → SQLAlchemy database: reads and writes
- Recipe BOM → SQLAlchemy database: reads and writes
- Stock ledger → SQLAlchemy database: records movements
- Dispatch planning → SQLAlchemy database: reads orders and stock
- Invoice snapshots → SQLAlchemy database: stores snapshots
- Monthly reports → SQLAlchemy database: reads business data
- Data export → SQLAlchemy database: reads business data
- Audit history → SQLAlchemy database: reads and writes
- Order routes → WhatsApp links: offers messaging
- Invoice snapshots → Receipt printing: prints snapshot
- Receipt printing → Thermal printer: sends receipt
