# audri-23/decorate3d architecture

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

## Overview

Decorate3D is a C2C used-furniture marketplace with room-planning and 3D visualization, augmented by AI discovery and a transaction-to-delivery workflow. Users browse or list furniture, assess and explore items, arrange delivery and checkout; escrow, disputes, invoices, and tracking support post-purchase fulfillment. The sampled source confirms several feature integrations and persistence paths, while unsampled modules are represented only where the tree documents their capability; uncertain wiring is omitted.

Main entry points: [`views/App.jsx`](https://github.com/audri-23/decorate3d/blob/main/views/App.jsx) (Marketplace UI), [`features/f5-ai-assistant/assistant.controller.js`](https://github.com/audri-23/decorate3d/blob/main/features/f5-ai-assistant/assistant.controller.js) (AI Assistant), [`features/f12-live-tracking/tracking.controller.js`](https://github.com/audri-23/decorate3d/blob/main/features/f12-live-tracking/tracking.controller.js) (Live Tracking), [`features/f16-disputes/dispute.controller.js`](https://github.com/audri-23/decorate3d/blob/main/features/f16-disputes/dispute.controller.js) (Dispute Resolution)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_market["Marketplace"]
  node_webapp["Marketplace UI<br/>[App.jsx]"]
  node_catalog["Product Catalog"]
  node_products[("Product Records<br/>[ProductModel.js]")]
  node_auth["Authentication<br/>[authController.js]"]
end

subgraph group_discovery["AI Discovery"]
  node_assessment["Damage Assessment"]
  node_tagging["Attribute Tagging"]
  node_style["Style Search"]
  node_assistant["AI Assistant"]
end

subgraph group_spatial["3D Design"]
  node_roomplanner["Room Planner"]
  node_layouts[("Room Layouts<br/>[RoomLayoutModel.js]")]
  node_viewer["3D Viewer"]
  node_assets["3D Asset Services<br/>[assetLibrary.js]"]
end

subgraph group_fulfillment["Transaction Fulfillment"]
  node_shipping["Shipping Quote"]
  node_dispatch["Courier Dispatch"]
  node_dispatchdata[("Dispatch Jobs<br/>[dispatch.model.js]")]
  node_tracking["Live Tracking"]
  node_trackingdata[("Tracking Sessions<br/>[tracking.model.js]")]
  node_checkout["Stripe Checkout"]
  node_orders[("Order Records<br/>[order.model.js]")]
  node_escrow["Escrow Holding"]
  node_invoice["Invoices"]
  node_disputes["Dispute Resolution"]
end

node_buyer(("Buyer"))
node_seller(("Seller"))
node_gemini{{"Gemini AI"}}
node_stripe{{"Stripe Payments"}}

node_buyer -->|"uses"| node_webapp
node_seller -->|"uses"| node_webapp
node_webapp -->|"requests catalog"| node_catalog
node_catalog -->|"reads and writes"| node_products
node_webapp -->|"authenticates"| node_auth
node_webapp -->|"requests assessment"| node_assessment
node_assessment -->|"analyzes images"| node_gemini
node_webapp -->|"requests tags"| node_tagging
node_tagging -->|"classifies images"| node_gemini
node_webapp -->|"searches styles"| node_style
node_style -->|"describes and embeds"| node_gemini
node_style -->|"searches matches"| node_products
node_webapp -->|"asks questions"| node_assistant
node_assistant -->|"reads product"| node_products
node_assistant -->|"reads delivery jobs"| node_dispatchdata
node_assistant -->|"generates replies"| node_gemini
node_webapp -->|"plans room"| node_roomplanner
node_roomplanner -->|"stores layouts"| node_layouts
node_webapp -->|"inspects furniture"| node_viewer
node_viewer -->|"loads 3D assets"| node_assets
node_webapp -->|"requests quote"| node_shipping
node_webapp -->|"starts purchase"| node_checkout
node_checkout -->|"creates payment"| node_stripe
node_checkout -->|"records order"| node_orders
node_stripe -->|"sends webhook"| node_checkout
node_webapp -->|"manages escrow"| node_escrow
node_webapp -->|"manages dispatch"| node_dispatch
node_dispatch -->|"reads and updates"| node_dispatchdata
node_webapp -->|"views delivery"| node_tracking
node_tracking -->|"checks job"| node_dispatchdata
node_tracking -->|"manages sessions"| node_trackingdata
node_tracking -->|"reads jobs"| node_dispatchdata
node_webapp -->|"raises and resolves"| node_disputes
node_disputes -->|"reads and updates"| node_orders
node_disputes -->|"releases funds"| node_escrow
node_disputes -->|"requests invoice"| node_invoice
node_invoice -->|"loads order"| node_orders

click node_webapp "https://github.com/audri-23/decorate3d/blob/main/views/App.jsx"
click node_catalog "https://github.com/audri-23/decorate3d/blob/main/controllers/productController.js"
click node_products "https://github.com/audri-23/decorate3d/blob/main/models/ProductModel.js"
click node_auth "https://github.com/audri-23/decorate3d/blob/main/controllers/authController.js"
click node_assessment "https://github.com/audri-23/decorate3d/blob/main/features/f1-damage-assessment/damage.controller.js"
click node_tagging "https://github.com/audri-23/decorate3d/blob/main/features/f3-attribute-tagging/tagging.controller.js"
click node_style "https://github.com/audri-23/decorate3d/blob/main/features/f4-style-search/styleSearch.controller.js"
click node_assistant "https://github.com/audri-23/decorate3d/blob/main/features/f5-ai-assistant/assistant.controller.js"
click node_roomplanner "https://github.com/audri-23/decorate3d/blob/main/controllers/roomPlannerController.js"
click node_layouts "https://github.com/audri-23/decorate3d/blob/main/models/RoomLayoutModel.js"
click node_viewer "https://github.com/audri-23/decorate3d/blob/main/controllers/useViewer3DController.js"
click node_assets "https://github.com/audri-23/decorate3d/blob/main/services/3d/assetLibrary.js"
click node_shipping "https://github.com/audri-23/decorate3d/blob/main/features/f10-shipping-quote/shipping.controller.js"
click node_dispatch "https://github.com/audri-23/decorate3d/blob/main/features/f11-courier-dispatch/dispatch.controller.js"
click node_dispatchdata "https://github.com/audri-23/decorate3d/blob/main/features/f11-courier-dispatch/dispatch.model.js"
click node_tracking "https://github.com/audri-23/decorate3d/blob/main/features/f12-live-tracking/tracking.controller.js"
click node_trackingdata "https://github.com/audri-23/decorate3d/blob/main/features/f12-live-tracking/tracking.model.js"
click node_checkout "https://github.com/audri-23/decorate3d/blob/main/features/f13-stripe-checkout/stripe.controller.js"
click node_orders "https://github.com/audri-23/decorate3d/blob/main/features/f13-stripe-checkout/order.model.js"
click node_escrow "https://github.com/audri-23/decorate3d/blob/main/features/f14-escrow-holding/escrow.controller.js"
click node_invoice "https://github.com/audri-23/decorate3d/blob/main/features/f15-invoice/invoice.controller.js"
click node_disputes "https://github.com/audri-23/decorate3d/blob/main/features/f16-disputes/dispute.controller.js"

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_catalog,node_products,node_auth toneBlue
class node_assessment,node_tagging,node_style,node_assistant toneAmber
class node_roomplanner,node_layouts,node_viewer,node_assets toneMint
class node_shipping,node_dispatch,node_dispatchdata,node_tracking,node_trackingdata,node_checkout,node_orders,node_escrow,node_invoice,node_disputes toneRose
class node_buyer,node_seller,node_gemini,node_stripe toneIndigo
```

## Components

### Marketplace

- [Marketplace UI](https://github.com/audri-23/decorate3d/blob/main/views/App.jsx): `views/App.jsx`
- [Product Catalog](https://github.com/audri-23/decorate3d/blob/main/controllers/productController.js): `controllers/productController.js`
- [Product Records](https://github.com/audri-23/decorate3d/blob/main/models/ProductModel.js): `models/ProductModel.js`
- [Authentication](https://github.com/audri-23/decorate3d/blob/main/controllers/authController.js): `controllers/authController.js`

### AI Discovery

- [Damage Assessment](https://github.com/audri-23/decorate3d/blob/main/features/f1-damage-assessment/damage.controller.js): `features/f1-damage-assessment/damage.controller.js`
- [Attribute Tagging](https://github.com/audri-23/decorate3d/blob/main/features/f3-attribute-tagging/tagging.controller.js): `features/f3-attribute-tagging/tagging.controller.js`
- [Style Search](https://github.com/audri-23/decorate3d/blob/main/features/f4-style-search/styleSearch.controller.js): `features/f4-style-search/styleSearch.controller.js`
- [AI Assistant](https://github.com/audri-23/decorate3d/blob/main/features/f5-ai-assistant/assistant.controller.js): `features/f5-ai-assistant/assistant.controller.js`

### 3D Design

- [Room Planner](https://github.com/audri-23/decorate3d/blob/main/controllers/roomPlannerController.js): `controllers/roomPlannerController.js`
- [Room Layouts](https://github.com/audri-23/decorate3d/blob/main/models/RoomLayoutModel.js): `models/RoomLayoutModel.js`
- [3D Viewer](https://github.com/audri-23/decorate3d/blob/main/controllers/useViewer3DController.js): `controllers/useViewer3DController.js`
- [3D Asset Services](https://github.com/audri-23/decorate3d/blob/main/services/3d/assetLibrary.js): `services/3d/assetLibrary.js`

### Transaction Fulfillment

- [Shipping Quote](https://github.com/audri-23/decorate3d/blob/main/features/f10-shipping-quote/shipping.controller.js): `features/f10-shipping-quote/shipping.controller.js`
- [Courier Dispatch](https://github.com/audri-23/decorate3d/blob/main/features/f11-courier-dispatch/dispatch.controller.js): `features/f11-courier-dispatch/dispatch.controller.js`
- [Dispatch Jobs](https://github.com/audri-23/decorate3d/blob/main/features/f11-courier-dispatch/dispatch.model.js): `features/f11-courier-dispatch/dispatch.model.js`
- [Live Tracking](https://github.com/audri-23/decorate3d/blob/main/features/f12-live-tracking/tracking.controller.js): `features/f12-live-tracking/tracking.controller.js`
- [Tracking Sessions](https://github.com/audri-23/decorate3d/blob/main/features/f12-live-tracking/tracking.model.js): `features/f12-live-tracking/tracking.model.js`
- [Stripe Checkout](https://github.com/audri-23/decorate3d/blob/main/features/f13-stripe-checkout/stripe.controller.js): `features/f13-stripe-checkout/stripe.controller.js`
- [Order Records](https://github.com/audri-23/decorate3d/blob/main/features/f13-stripe-checkout/order.model.js): `features/f13-stripe-checkout/order.model.js`
- [Escrow Holding](https://github.com/audri-23/decorate3d/blob/main/features/f14-escrow-holding/escrow.controller.js): `features/f14-escrow-holding/escrow.controller.js`
- [Invoices](https://github.com/audri-23/decorate3d/blob/main/features/f15-invoice/invoice.controller.js): `features/f15-invoice/invoice.controller.js`
- [Dispute Resolution](https://github.com/audri-23/decorate3d/blob/main/features/f16-disputes/dispute.controller.js): `features/f16-disputes/dispute.controller.js`

### Other components

- **Buyer**
- **Seller**
- **Gemini AI**
- **Stripe Payments**

## Connections

- Buyer → Marketplace UI: uses
- Seller → Marketplace UI: uses
- Marketplace UI → Product Catalog: requests catalog
- Product Catalog → Product Records: reads and writes
- Marketplace UI → Authentication: authenticates
- Marketplace UI → Damage Assessment: requests assessment
- Damage Assessment → Gemini AI: analyzes images
- Marketplace UI → Attribute Tagging: requests tags
- Attribute Tagging → Gemini AI: classifies images
- Marketplace UI → Style Search: searches styles
- Style Search → Gemini AI: describes and embeds
- Style Search → Product Records: searches matches
- Marketplace UI → AI Assistant: asks questions
- AI Assistant → Product Records: reads product
- AI Assistant → Dispatch Jobs: reads delivery jobs
- AI Assistant → Gemini AI: generates replies
- Marketplace UI → Room Planner: plans room
- Room Planner → Room Layouts: stores layouts
- Marketplace UI → 3D Viewer: inspects furniture
- 3D Viewer → 3D Asset Services: loads 3D assets
- Marketplace UI → Shipping Quote: requests quote
- Marketplace UI → Stripe Checkout: starts purchase
- Stripe Checkout → Stripe Payments: creates payment
- Stripe Checkout → Order Records: records order
- Stripe Payments → Stripe Checkout: sends webhook
- Marketplace UI → Escrow Holding: manages escrow
- Marketplace UI → Courier Dispatch: manages dispatch
- Courier Dispatch → Dispatch Jobs: reads and updates
- Marketplace UI → Live Tracking: views delivery
- Live Tracking → Dispatch Jobs: checks job
- Live Tracking → Tracking Sessions: manages sessions
- Live Tracking → Dispatch Jobs: reads jobs
- Marketplace UI → Dispute Resolution: raises and resolves
- Dispute Resolution → Order Records: reads and updates
- Dispute Resolution → Escrow Holding: releases funds
- Dispute Resolution → Invoices: requests invoice
- Invoices → Order Records: loads order
