# filipdjekic/bakery architecture

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

- Interactive diagram: https://gitdiagram.com/filipdjekic/bakery
- Repository: https://github.com/filipdjekic/bakery

## Overview

Pekara is a bakery storefront with online ordering and an administration area for managing orders, products, categories, and bakery settings. The customer journey spans browsing the catalog, maintaining a cart, choosing a pickup time, submitting an order, and viewing its confirmation; the admin side supports operations and configuration. The order API’s validation, idempotency, rate limiting, and creation flow, plus pickup-slot and authentication endpoints, are supported by sampled source. Other feature branches are represented by their paths; their internal wiring was not sampled.

Main entry points: [`pekara/src/app/admin/(protected)`](https://github.com/filipdjekic/bakery/tree/main/pekara/src/app/admin/(protected)) (Admin workspace), [`pekara/src/app/api/orders/route.ts`](https://github.com/filipdjekic/bakery/blob/main/pekara/src/app/api/orders/route.ts) (Order endpoint), [`pekara/src/app/(public)`](https://github.com/filipdjekic/bakery/tree/main/pekara/src/app/(public)) (Storefront pages), [`pekara/src/features/cart`](https://github.com/filipdjekic/bakery/tree/main/pekara/src/features/cart) (Shopping cart)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storefront["Storefront"]
  node_storefront["Storefront pages"]
  node_catalog["Product catalog"]
  node_cart["Shopping cart"]
  node_cartstorage["Browser cart storage<br/>[cart-storage.ts]"]
end

subgraph group_ordering["Ordering"]
  node_checkout["Checkout"]
  node_ordersapi["Order endpoint<br/>[route.ts]"]
  node_pickupapi["Pickup slots endpoint<br/>[route.ts]"]
  node_pickup["Pickup scheduling<br/>[pickup-slots.ts]"]
  node_validation["Checkout validation<br/>[checkout.ts]"]
  node_idempotency["Idempotent processing<br/>[idempotency.ts]"]
  node_createorder["Order creation<br/>[create-order.ts]"]
  node_confirmation["Order confirmation"]
end

subgraph group_operations["Bakery operations"]
  node_admin["Admin workspace"]
  node_adminorders["Order management"]
  node_admincatalog["Product management"]
  node_categories["Category management"]
  node_settings["Bakery settings"]
end

subgraph group_backend["Backend services"]
  node_authapi["Auth endpoint<br/>[route.ts]"]
  node_auth["Authentication<br/>[auth.ts]"]
  node_db[("PostgreSQL database<br/>[db.ts]")]
  node_email["Transactional email"]
end

node_customer(("Customer"))
node_resend["Resend"]
node_blob["Vercel Blob"]

node_customer -->|"browses"| node_storefront
node_storefront -->|"shows products"| node_catalog
node_customer -->|"adds items"| node_cart
node_cart -->|"persists"| node_cartstorage
node_customer -->|"checks out"| node_checkout
node_checkout -->|"submits order"| node_ordersapi
node_ordersapi -->|"validates with"| node_validation
node_ordersapi -->|"executes through"| node_idempotency
node_ordersapi -->|"creates via"| node_createorder
node_customer -->|"requests slots"| node_pickupapi
node_pickupapi -->|"loads slots"| node_pickup
node_customer -->|"views result"| node_confirmation
node_admin -->|"manages orders"| node_adminorders
node_admin -->|"manages products"| node_admincatalog
node_admin -->|"manages categories"| node_categories
node_admin -->|"configures bakery"| node_settings
node_authapi -->|"dispatches to"| node_auth
node_auth -->|"uses adapter"| node_db
node_email -.->|"sends through"| node_resend
node_blob -.->|"stores images for"| node_admincatalog

click node_storefront "https://github.com/filipdjekic/bakery/tree/main/pekara/src/app/(public)"
click node_catalog "https://github.com/filipdjekic/bakery/tree/main/pekara/src/features/catalog"
click node_cart "https://github.com/filipdjekic/bakery/tree/main/pekara/src/features/cart"
click node_cartstorage "https://github.com/filipdjekic/bakery/blob/main/pekara/src/features/cart/store/cart-storage.ts"
click node_checkout "https://github.com/filipdjekic/bakery/tree/main/pekara/src/features/checkout"
click node_ordersapi "https://github.com/filipdjekic/bakery/blob/main/pekara/src/app/api/orders/route.ts"
click node_pickupapi "https://github.com/filipdjekic/bakery/blob/main/pekara/src/app/api/pickup-slots/route.ts"
click node_pickup "https://github.com/filipdjekic/bakery/blob/main/pekara/src/server/services/pickup-slots.ts"
click node_validation "https://github.com/filipdjekic/bakery/blob/main/pekara/src/validation/checkout.ts"
click node_idempotency "https://github.com/filipdjekic/bakery/blob/main/pekara/src/server/services/idempotency.ts"
click node_createorder "https://github.com/filipdjekic/bakery/blob/main/pekara/src/server/services/create-order.ts"
click node_confirmation "https://github.com/filipdjekic/bakery/blob/main/pekara/src/features/orders/components/order-confirmation.tsx"
click node_admin "https://github.com/filipdjekic/bakery/tree/main/pekara/src/app/admin/(protected)"
click node_adminorders "https://github.com/filipdjekic/bakery/tree/main/pekara/src/features/admin-orders"
click node_admincatalog "https://github.com/filipdjekic/bakery/tree/main/pekara/src/features/admin-products"
click node_categories "https://github.com/filipdjekic/bakery/tree/main/pekara/src/features/categories"
click node_settings "https://github.com/filipdjekic/bakery/tree/main/pekara/src/features/settings"
click node_authapi "https://github.com/filipdjekic/bakery/blob/main/pekara/src/app/api/auth/%5B...all%5D/route.ts"
click node_auth "https://github.com/filipdjekic/bakery/blob/main/pekara/src/server/auth/auth.ts"
click node_db "https://github.com/filipdjekic/bakery/blob/main/pekara/src/prisma/db.ts"
click node_email "https://github.com/filipdjekic/bakery/tree/main/pekara/src/server/email"

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_storefront,node_catalog,node_cart,node_cartstorage toneBlue
class node_checkout,node_ordersapi,node_pickupapi,node_pickup,node_validation,node_idempotency,node_createorder,node_confirmation toneAmber
class node_admin,node_adminorders,node_admincatalog,node_categories,node_settings toneMint
class node_authapi,node_auth,node_db,node_email toneRose
class node_customer,node_resend,node_blob toneIndigo
```

## Components

### Storefront

- [Storefront pages](https://github.com/filipdjekic/bakery/tree/main/pekara/src/app/(public)): `pekara/src/app/(public)`
- [Product catalog](https://github.com/filipdjekic/bakery/tree/main/pekara/src/features/catalog): `pekara/src/features/catalog`
- [Shopping cart](https://github.com/filipdjekic/bakery/tree/main/pekara/src/features/cart): `pekara/src/features/cart`
- [Browser cart storage](https://github.com/filipdjekic/bakery/blob/main/pekara/src/features/cart/store/cart-storage.ts): `pekara/src/features/cart/store/cart-storage.ts`

### Ordering

- [Checkout](https://github.com/filipdjekic/bakery/tree/main/pekara/src/features/checkout): `pekara/src/features/checkout`
- [Order endpoint](https://github.com/filipdjekic/bakery/blob/main/pekara/src/app/api/orders/route.ts): `pekara/src/app/api/orders/route.ts`
- [Pickup slots endpoint](https://github.com/filipdjekic/bakery/blob/main/pekara/src/app/api/pickup-slots/route.ts): `pekara/src/app/api/pickup-slots/route.ts`
- [Pickup scheduling](https://github.com/filipdjekic/bakery/blob/main/pekara/src/server/services/pickup-slots.ts): `pekara/src/server/services/pickup-slots.ts`
- [Checkout validation](https://github.com/filipdjekic/bakery/blob/main/pekara/src/validation/checkout.ts): `pekara/src/validation/checkout.ts`
- [Idempotent processing](https://github.com/filipdjekic/bakery/blob/main/pekara/src/server/services/idempotency.ts): `pekara/src/server/services/idempotency.ts`
- [Order creation](https://github.com/filipdjekic/bakery/blob/main/pekara/src/server/services/create-order.ts): `pekara/src/server/services/create-order.ts`
- [Order confirmation](https://github.com/filipdjekic/bakery/blob/main/pekara/src/features/orders/components/order-confirmation.tsx): `pekara/src/features/orders/components/order-confirmation.tsx`

### Bakery operations

- [Admin workspace](https://github.com/filipdjekic/bakery/tree/main/pekara/src/app/admin/(protected)): `pekara/src/app/admin/(protected)`
- [Order management](https://github.com/filipdjekic/bakery/tree/main/pekara/src/features/admin-orders): `pekara/src/features/admin-orders`
- [Product management](https://github.com/filipdjekic/bakery/tree/main/pekara/src/features/admin-products): `pekara/src/features/admin-products`
- [Category management](https://github.com/filipdjekic/bakery/tree/main/pekara/src/features/categories): `pekara/src/features/categories`
- [Bakery settings](https://github.com/filipdjekic/bakery/tree/main/pekara/src/features/settings): `pekara/src/features/settings`

### Backend services

- [Auth endpoint](https://github.com/filipdjekic/bakery/blob/main/pekara/src/app/api/auth/%5B...all%5D/route.ts): `pekara/src/app/api/auth/[...all]/route.ts`
- [Authentication](https://github.com/filipdjekic/bakery/blob/main/pekara/src/server/auth/auth.ts): `pekara/src/server/auth/auth.ts`
- [PostgreSQL database](https://github.com/filipdjekic/bakery/blob/main/pekara/src/prisma/db.ts): `pekara/src/prisma/db.ts`
- [Transactional email](https://github.com/filipdjekic/bakery/tree/main/pekara/src/server/email): `pekara/src/server/email`

### Other components

- **Customer**
- **Resend**
- **Vercel Blob**

## Connections

- Customer → Storefront pages: browses
- Storefront pages → Product catalog: shows products
- Customer → Shopping cart: adds items
- Shopping cart → Browser cart storage: persists
- Customer → Checkout: checks out
- Checkout → Order endpoint: submits order
- Order endpoint → Checkout validation: validates with
- Order endpoint → Idempotent processing: executes through
- Order endpoint → Order creation: creates via
- Customer → Pickup slots endpoint: requests slots
- Pickup slots endpoint → Pickup scheduling: loads slots
- Customer → Order confirmation: views result
- Admin workspace → Order management: manages orders
- Admin workspace → Product management: manages products
- Admin workspace → Category management: manages categories
- Admin workspace → Bakery settings: configures bakery
- Auth endpoint → Authentication: dispatches to
- Authentication → PostgreSQL database: uses adapter
- Transactional email → Resend: sends through
- Vercel Blob → Product management: stores images for
