# 29nls/leiz-store architecture

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

- Interactive diagram: https://gitdiagram.com/29nls/leiz-store
- Repository: https://github.com/29nls/leiz-store

## Overview

LEIZ STORE is a Dragon Nest Insane materials marketplace. Buyers browse products, build a cart, create an order at checkout, submit manual-payment proof, and track or confirm payment; admins verify payments through Discord. The graph also preserves the documented invoice, admin, and queued-job capabilities. API-to-service wiring and storage behavior are shown where the excerpts or README support them; unsampled page and service internals are represented at their exact enclosing paths, so uncertain calls are omitted.

Main entry points: [`src/lib/supabase.ts`](https://github.com/29nls/leiz-store/blob/main/src/lib/supabase.ts) (Supabase Database), [`src/app/admin/page.tsx`](https://github.com/29nls/leiz-store/blob/main/src/app/admin/page.tsx) (Admin Panel), [`src/lib/invoice/invoice-service.ts`](https://github.com/29nls/leiz-store/blob/main/src/lib/invoice/invoice-service.ts) (Invoice Service), [`src/app/api/orders/route.ts`](https://github.com/29nls/leiz-store/blob/main/src/app/api/orders/route.ts) (Order API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_shop["Storefront"]
  node_catalog["Product Catalog<br/>[page.tsx]"]
  node_productdetail["Product Detail<br/>[page.tsx]"]
  node_productapi["Product API<br/>[route.ts]"]
  node_productdetailapi["Product Detail API<br/>[route.ts]"]
  node_cart["Cart State<br/>[cart-store.ts]"]
end

subgraph group_orders["Orders &amp; Payments"]
  node_checkout["Checkout<br/>[page.tsx]"]
  node_ordersapi["Order API<br/>[route.ts]"]
  node_paymentpage["Payment Page<br/>[page.tsx]"]
  node_confirmapi["Order Confirmation API<br/>[route.ts]"]
  node_tracking["Order Tracking<br/>[route.ts]"]
  node_discordapi["Discord Interactions<br/>[route.ts]"]
end

subgraph group_admin["Administration"]
  node_adminui["Admin Panel<br/>[page.tsx]"]
  node_adminproducts["Product Admin API<br/>[route.ts]"]
  node_adminusers["User Admin API<br/>[route.ts]"]
  node_adminstats["Admin Stats API<br/>[route.ts]"]
  node_invoicesapi["Invoice Admin API<br/>[route.ts]"]
end

subgraph group_services["Domain Services"]
  node_orderservice["Order Service<br/>[index.ts]"]
  node_paymentservice["Payment Service<br/>[payment-service.ts]"]
  node_invoiceservice["Invoice Service<br/>[invoice-service.ts]"]
end

subgraph group_platform["Data &amp; Integrations"]
  node_proofstorage["Proof Storage"]
  node_queuecron["Job Processor<br/>[route.ts]"]
  node_queue["Job Queue<br/>[queue-service.ts]"]
  node_database[("Supabase Database<br/>[supabase.ts]")]
  node_storage[("Supabase Storage<br/>[supabase.ts]")]
end

node_buyer(("Buyer"))
node_discord["Discord"]
node_email["Invoice Email"]

node_buyer -->|"browses"| node_catalog
node_catalog -->|"fetches products"| node_productapi
node_buyer -->|"views item"| node_productdetail
node_productdetail -->|"fetches details"| node_productdetailapi
node_buyer -->|"adds items"| node_cart
node_cart -->|"supplies cart"| node_checkout
node_buyer -->|"submits order"| node_checkout
node_checkout -->|"creates order"| node_ordersapi
node_ordersapi -->|"creates order"| node_orderservice
node_orderservice -->|"persists order"| node_database
node_ordersapi -->|"returns payment details"| node_paymentpage
node_buyer -->|"uploads proof"| node_paymentpage
node_paymentpage -->|"confirms payment"| node_confirmapi
node_confirmapi -->|"validates confirmation"| node_paymentservice
node_paymentservice -->|"updates order"| node_database
node_confirmapi -->|"stores proof"| node_proofstorage
node_proofstorage -->|"uploads image"| node_storage
node_buyer -->|"tracks order"| node_tracking
node_tracking -->|"reads order"| node_database
node_discord -->|"sends interaction"| node_discordapi
node_discordapi -->|"dispatches payment action"| node_paymentservice
node_discordapi -->|"updates interaction"| node_discord
node_adminui -->|"manages products"| node_adminproducts
node_adminui -->|"manages users"| node_adminusers
node_adminui -->|"requests metrics"| node_adminstats
node_adminui -->|"manages invoices"| node_invoicesapi
node_adminproducts -->|"reads and writes"| node_database
node_adminusers -->|"manages profiles"| node_database
node_adminstats -->|"queries metrics"| node_database
node_invoicesapi -->|"handles invoices"| node_invoiceservice
node_invoiceservice -->|"reads order data"| node_database
node_invoiceservice -->|"stores PDF"| node_storage
node_invoiceservice -->|"sends invoice"| node_email
node_queuecron -->|"drains jobs"| node_queue
node_queue -->|"reads and writes jobs"| node_database

click node_catalog "https://github.com/29nls/leiz-store/blob/main/src/app/products/page.tsx"
click node_productdetail "https://github.com/29nls/leiz-store/blob/main/src/app/products/%5Bslug%5D/page.tsx"
click node_productapi "https://github.com/29nls/leiz-store/blob/main/src/app/api/products/route.ts"
click node_productdetailapi "https://github.com/29nls/leiz-store/blob/main/src/app/api/products/%5Bslug%5D/route.ts"
click node_cart "https://github.com/29nls/leiz-store/blob/main/src/stores/cart-store.ts"
click node_checkout "https://github.com/29nls/leiz-store/blob/main/src/app/checkout/page.tsx"
click node_ordersapi "https://github.com/29nls/leiz-store/blob/main/src/app/api/orders/route.ts"
click node_orderservice "https://github.com/29nls/leiz-store/blob/main/src/lib/services/index.ts"
click node_paymentpage "https://github.com/29nls/leiz-store/blob/main/src/app/payment/%5BorderId%5D/page.tsx"
click node_confirmapi "https://github.com/29nls/leiz-store/blob/main/src/app/api/orders/%5BorderId%5D/confirm/route.ts"
click node_proofstorage "https://github.com/29nls/leiz-store/blob/main/src/lib/payment/payment-proof-storage.ts"
click node_tracking "https://github.com/29nls/leiz-store/blob/main/src/app/api/orders/track/route.ts"
click node_discordapi "https://github.com/29nls/leiz-store/blob/main/src/app/api/discord/interactions/route.ts"
click node_paymentservice "https://github.com/29nls/leiz-store/blob/main/src/lib/payment/payment-service.ts"
click node_adminui "https://github.com/29nls/leiz-store/blob/main/src/app/admin/page.tsx"
click node_adminproducts "https://github.com/29nls/leiz-store/blob/main/src/app/api/admin/products/route.ts"
click node_adminusers "https://github.com/29nls/leiz-store/blob/main/src/app/api/admin/users/route.ts"
click node_adminstats "https://github.com/29nls/leiz-store/blob/main/src/app/api/admin/stats/route.ts"
click node_invoicesapi "https://github.com/29nls/leiz-store/blob/main/src/app/api/admin/invoices/route.ts"
click node_invoiceservice "https://github.com/29nls/leiz-store/blob/main/src/lib/invoice/invoice-service.ts"
click node_queuecron "https://github.com/29nls/leiz-store/blob/main/src/app/api/cron/process-jobs/route.ts"
click node_queue "https://github.com/29nls/leiz-store/blob/main/src/lib/queue/queue-service.ts"
click node_database "https://github.com/29nls/leiz-store/blob/main/src/lib/supabase.ts"
click node_storage "https://github.com/29nls/leiz-store/blob/main/src/lib/supabase.ts"

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_catalog,node_productdetail,node_productapi,node_productdetailapi,node_cart toneBlue
class node_checkout,node_ordersapi,node_paymentpage,node_confirmapi,node_tracking,node_discordapi toneAmber
class node_adminui,node_adminproducts,node_adminusers,node_adminstats,node_invoicesapi toneMint
class node_orderservice,node_paymentservice,node_invoiceservice toneRose
class node_proofstorage,node_queuecron,node_queue,node_database,node_storage,node_buyer,node_discord,node_email toneIndigo
```

## Components

### Storefront

- [Product Catalog](https://github.com/29nls/leiz-store/blob/main/src/app/products/page.tsx): `src/app/products/page.tsx`
- [Product Detail](https://github.com/29nls/leiz-store/blob/main/src/app/products/%5Bslug%5D/page.tsx): `src/app/products/[slug]/page.tsx`
- [Product API](https://github.com/29nls/leiz-store/blob/main/src/app/api/products/route.ts): `src/app/api/products/route.ts`
- [Product Detail API](https://github.com/29nls/leiz-store/blob/main/src/app/api/products/%5Bslug%5D/route.ts): `src/app/api/products/[slug]/route.ts`
- [Cart State](https://github.com/29nls/leiz-store/blob/main/src/stores/cart-store.ts): `src/stores/cart-store.ts`

### Orders & Payments

- [Checkout](https://github.com/29nls/leiz-store/blob/main/src/app/checkout/page.tsx): `src/app/checkout/page.tsx`
- [Order API](https://github.com/29nls/leiz-store/blob/main/src/app/api/orders/route.ts): `src/app/api/orders/route.ts`
- [Payment Page](https://github.com/29nls/leiz-store/blob/main/src/app/payment/%5BorderId%5D/page.tsx): `src/app/payment/[orderId]/page.tsx`
- [Order Confirmation API](https://github.com/29nls/leiz-store/blob/main/src/app/api/orders/%5BorderId%5D/confirm/route.ts): `src/app/api/orders/[orderId]/confirm/route.ts`
- [Order Tracking](https://github.com/29nls/leiz-store/blob/main/src/app/api/orders/track/route.ts): `src/app/api/orders/track/route.ts`
- [Discord Interactions](https://github.com/29nls/leiz-store/blob/main/src/app/api/discord/interactions/route.ts): `src/app/api/discord/interactions/route.ts`

### Administration

- [Admin Panel](https://github.com/29nls/leiz-store/blob/main/src/app/admin/page.tsx): `src/app/admin/page.tsx`
- [Product Admin API](https://github.com/29nls/leiz-store/blob/main/src/app/api/admin/products/route.ts): `src/app/api/admin/products/route.ts`
- [User Admin API](https://github.com/29nls/leiz-store/blob/main/src/app/api/admin/users/route.ts): `src/app/api/admin/users/route.ts`
- [Admin Stats API](https://github.com/29nls/leiz-store/blob/main/src/app/api/admin/stats/route.ts): `src/app/api/admin/stats/route.ts`
- [Invoice Admin API](https://github.com/29nls/leiz-store/blob/main/src/app/api/admin/invoices/route.ts): `src/app/api/admin/invoices/route.ts`

### Domain Services

- [Order Service](https://github.com/29nls/leiz-store/blob/main/src/lib/services/index.ts): `src/lib/services/index.ts`
- [Payment Service](https://github.com/29nls/leiz-store/blob/main/src/lib/payment/payment-service.ts): `src/lib/payment/payment-service.ts`
- [Invoice Service](https://github.com/29nls/leiz-store/blob/main/src/lib/invoice/invoice-service.ts): `src/lib/invoice/invoice-service.ts`

### Data & Integrations

- [Proof Storage](https://github.com/29nls/leiz-store/blob/main/src/lib/payment/payment-proof-storage.ts): `src/lib/payment/payment-proof-storage.ts`
- [Job Processor](https://github.com/29nls/leiz-store/blob/main/src/app/api/cron/process-jobs/route.ts): `src/app/api/cron/process-jobs/route.ts`
- [Job Queue](https://github.com/29nls/leiz-store/blob/main/src/lib/queue/queue-service.ts): `src/lib/queue/queue-service.ts`
- [Supabase Database](https://github.com/29nls/leiz-store/blob/main/src/lib/supabase.ts): `src/lib/supabase.ts`
- [Supabase Storage](https://github.com/29nls/leiz-store/blob/main/src/lib/supabase.ts): `src/lib/supabase.ts`

### Other components

- **Buyer**
- **Discord**
- **Invoice Email**

## Connections

- Buyer → Product Catalog: browses
- Product Catalog → Product API: fetches products
- Buyer → Product Detail: views item
- Product Detail → Product Detail API: fetches details
- Buyer → Cart State: adds items
- Cart State → Checkout: supplies cart
- Buyer → Checkout: submits order
- Checkout → Order API: creates order
- Order API → Order Service: creates order
- Order Service → Supabase Database: persists order
- Order API → Payment Page: returns payment details
- Buyer → Payment Page: uploads proof
- Payment Page → Order Confirmation API: confirms payment
- Order Confirmation API → Payment Service: validates confirmation
- Payment Service → Supabase Database: updates order
- Order Confirmation API → Proof Storage: stores proof
- Proof Storage → Supabase Storage: uploads image
- Buyer → Order Tracking: tracks order
- Order Tracking → Supabase Database: reads order
- Discord → Discord Interactions: sends interaction
- Discord Interactions → Payment Service: dispatches payment action
- Discord Interactions → Discord: updates interaction
- Admin Panel → Product Admin API: manages products
- Admin Panel → User Admin API: manages users
- Admin Panel → Admin Stats API: requests metrics
- Admin Panel → Invoice Admin API: manages invoices
- Product Admin API → Supabase Database: reads and writes
- User Admin API → Supabase Database: manages profiles
- Admin Stats API → Supabase Database: queries metrics
- Invoice Admin API → Invoice Service: handles invoices
- Invoice Service → Supabase Database: reads order data
- Invoice Service → Supabase Storage: stores PDF
- Invoice Service → Invoice Email: sends invoice
- Job Processor → Job Queue: drains jobs
- Job Queue → Supabase Database: reads and writes jobs
