# datcc004/24ct2-cao_xuan_dat architecture

> Architecture diagram of the GitHub repository datcc004/24ct2-cao_xuan_dat, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/datcc004/24ct2-cao_xuan_dat
- Repository: https://github.com/datcc004/24ct2-cao_xuan_dat

## Overview

Motorbike Parts Shop is a customer-facing motorcycle-parts store with staff/admin management. Customers browse and search products, manage a cart, place and track orders, and can review eligible purchases; admins manage catalog, orders, users, settings, and storefront backgrounds. The Express server serves the browser UI and mounts separate API modules, which use a shared MySQL pool. The README documents these capabilities; the main workflow links are limited to relationships visible in the sampled server and route sources.

Main entry points: [`server.js`](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/server.js) (Express Server), [`config/db.js`](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/config/db.js) (MySQL Pool), [`routes/ai.js`](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/ai.js) (AI Assistant), [`public/js/app.js`](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/public/js/app.js) (Shop UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storefront["Storefront"]
  node_store_ui["Shop UI<br/>[app.js]"]
  node_admin_ui["Admin UI<br/>[admin.js]"]
  node_ai["AI Assistant<br/>[ai.js]"]
end

subgraph group_commerce["Shopping and Orders"]
  node_products["Product Catalog<br/>[products.js]"]
  node_categories["Categories<br/>[categories.js]"]
  node_cart["Shopping Cart<br/>[cart.js]"]
  node_orders["Orders and Payment<br/>[orders.js]"]
  node_coupons["Coupons<br/>[coupons.js]"]
  node_reviews["Product Reviews<br/>[reviews.js]"]
end

subgraph group_management["Store Management"]
  node_admin_api["Admin Operations<br/>[admin.js]"]
  node_settings["Shop Settings<br/>[settings.js]"]
  node_backgrounds["Background Images<br/>[background.js]"]
end

subgraph group_platform["Platform Services"]
  node_server["Express Server<br/>[server.js]"]
  node_auth["Accounts and Auth<br/>[auth.js]"]
  node_mysql[("MySQL Pool<br/>[db.js]")]
end

node_customer(("Customer"))
node_staff_admin(("Staff / Admin"))
node_gemini{{"Gemini API"}}

node_customer -->|"shops through"| node_store_ui
node_staff_admin -->|"manages through"| node_admin_ui
node_server -->|"serves"| node_store_ui
node_server -->|"serves"| node_admin_ui
node_store_ui -.->|"calls APIs"| node_server
node_admin_ui -.->|"calls APIs"| node_server
node_server -->|"mounts routes"| node_auth
node_server -->|"mounts routes"| node_products
node_server -->|"mounts routes"| node_categories
node_server -->|"mounts routes"| node_cart
node_server -->|"mounts routes"| node_orders
node_server -->|"mounts routes"| node_coupons
node_server -->|"mounts routes"| node_reviews
node_server -->|"mounts routes"| node_ai
node_server -->|"mounts routes"| node_admin_api
node_server -->|"mounts routes"| node_settings
node_server -->|"mounts routes"| node_backgrounds
node_auth -->|"queries"| node_mysql
node_products -->|"queries"| node_mysql
node_categories -->|"queries"| node_mysql
node_cart -->|"queries"| node_mysql
node_orders -->|"queries"| node_mysql
node_coupons -->|"queries"| node_mysql
node_reviews -->|"queries"| node_mysql
node_admin_api -->|"queries"| node_mysql
node_settings -->|"queries"| node_mysql
node_backgrounds -->|"queries"| node_mysql
node_ai -->|"searches catalog"| node_mysql
node_ai -->|"generates response"| node_gemini

click node_store_ui "https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/public/js/app.js"
click node_admin_ui "https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/public/js/admin.js"
click node_server "https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/server.js"
click node_auth "https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/auth.js"
click node_products "https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/products.js"
click node_categories "https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/categories.js"
click node_cart "https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/cart.js"
click node_orders "https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/orders.js"
click node_coupons "https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/coupons.js"
click node_reviews "https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/reviews.js"
click node_admin_api "https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/admin.js"
click node_settings "https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/settings.js"
click node_backgrounds "https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/background.js"
click node_ai "https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/ai.js"
click node_mysql "https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/config/db.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_store_ui,node_admin_ui,node_ai toneBlue
class node_products,node_categories,node_cart,node_orders,node_coupons,node_reviews toneAmber
class node_admin_api,node_settings,node_backgrounds,node_gemini toneMint
class node_server,node_auth,node_mysql toneRose
class node_customer,node_staff_admin toneIndigo
```

## Components

### Storefront

- [Shop UI](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/public/js/app.js): `public/js/app.js`
- [Admin UI](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/public/js/admin.js): `public/js/admin.js`
- [AI Assistant](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/ai.js): `routes/ai.js`

### Shopping and Orders

- [Product Catalog](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/products.js): `routes/products.js`
- [Categories](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/categories.js): `routes/categories.js`
- [Shopping Cart](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/cart.js): `routes/cart.js`
- [Orders and Payment](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/orders.js): `routes/orders.js`
- [Coupons](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/coupons.js): `routes/coupons.js`
- [Product Reviews](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/reviews.js): `routes/reviews.js`

### Store Management

- [Admin Operations](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/admin.js): `routes/admin.js`
- [Shop Settings](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/settings.js): `routes/settings.js`
- [Background Images](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/background.js): `routes/background.js`

### Platform Services

- [Express Server](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/server.js): `server.js`
- [Accounts and Auth](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/routes/auth.js): `routes/auth.js`
- [MySQL Pool](https://github.com/datcc004/24ct2-cao_xuan_dat/blob/main/config/db.js): `config/db.js`

### Other components

- **Customer**
- **Staff / Admin**
- **Gemini API**

## Connections

- Customer → Shop UI: shops through (evidence: `README.md`)
- Staff / Admin → Admin UI: manages through (evidence: `README.md`)
- Express Server → Shop UI: serves (evidence: `server.js`)
- Express Server → Admin UI: serves (evidence: `server.js`)
- Shop UI → Express Server: calls APIs
- Admin UI → Express Server: calls APIs
- Express Server → Accounts and Auth: mounts routes (evidence: `server.js`)
- Express Server → Product Catalog: mounts routes (evidence: `server.js`)
- Express Server → Categories: mounts routes (evidence: `server.js`)
- Express Server → Shopping Cart: mounts routes (evidence: `server.js`)
- Express Server → Orders and Payment: mounts routes (evidence: `server.js`)
- Express Server → Coupons: mounts routes (evidence: `server.js`)
- Express Server → Product Reviews: mounts routes (evidence: `server.js`)
- Express Server → AI Assistant: mounts routes (evidence: `server.js`)
- Express Server → Admin Operations: mounts routes (evidence: `server.js`)
- Express Server → Shop Settings: mounts routes (evidence: `server.js`)
- Express Server → Background Images: mounts routes (evidence: `server.js`)
- Accounts and Auth → MySQL Pool: queries (evidence: `routes/auth.js`)
- Product Catalog → MySQL Pool: queries (evidence: `routes/products.js`)
- Categories → MySQL Pool: queries (evidence: `routes/categories.js`)
- Shopping Cart → MySQL Pool: queries (evidence: `routes/cart.js`)
- Orders and Payment → MySQL Pool: queries (evidence: `routes/orders.js`)
- Coupons → MySQL Pool: queries (evidence: `routes/coupons.js`)
- Product Reviews → MySQL Pool: queries (evidence: `routes/reviews.js`)
- Admin Operations → MySQL Pool: queries (evidence: `routes/admin.js`)
- Shop Settings → MySQL Pool: queries (evidence: `routes/settings.js`)
- Background Images → MySQL Pool: queries (evidence: `routes/background.js`)
- AI Assistant → MySQL Pool: searches catalog (evidence: `routes/ai.js`)
- AI Assistant → Gemini API: generates response (evidence: `routes/ai.js`)
