# dungtttd01702-coder/vamos-store architecture

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

- Interactive diagram: https://gitdiagram.com/dungtttd01702-coder/vamos-store
- Repository: https://github.com/dungtttd01702-coder/vamos-store

## Overview

VAMOS STORE is a server-rendered sneaker-commerce application. A shopper browses the catalog, manages a session or database cart, and submits a COD order; order placement validates stock and voucher rules inside a database transaction. Customers can manage accounts and orders, while administrators manage catalog, inventory, orders, vouchers, customers, and banners. The graph follows the documented MVC layers and sampled imports; some feature internals are represented by their enclosing directories because their source was not sampled.

Main entry points: [`src/routes`](https://github.com/dungtttd01702-coder/vamos-store/tree/main/src/routes) (HTTP routes), [`src/config/database.js`](https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/config/database.js) (Database access), [`src/app.js`](https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/app.js) (Express application), [`src/services/order.service.js`](https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/services/order.service.js) (Order lifecycle)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Web entry"]
  node_app["Express application<br/>[app.js]"]
  node_routes["HTTP routes"]
  node_views["Pug pages"]
end

subgraph group_shop["Shopping"]
  node_product_controller["Product browsing"]
  node_product_service["Catalog service<br/>[product.service.js]"]
  node_product_repository["Product repository"]
  node_cart_controller["Cart management<br/>[cart.controller.js]"]
  node_auth_controller["Account access<br/>[auth.controller.js]"]
end

subgraph group_orders["Orders"]
  node_checkout_controller["Checkout"]
  node_order_service["Order lifecycle<br/>[order.service.js]"]
  node_account_controller["Customer orders"]
end

subgraph group_admin["Administration"]
  node_admin_controller["Admin operations"]
end

subgraph group_infra["Shared infrastructure"]
  node_auth_middleware["Session and access checks<br/>[auth.middleware.js]"]
  node_database_config["Database access<br/>[database.js]"]
  node_sqlserver[("Microsoft SQL Server")]
end

node_browser(("Shopper or admin"))

node_browser -->|"sends requests"| node_app
node_app -->|"mounts routes"| node_routes
node_routes -->|"dispatches product"| node_product_controller
node_routes -->|"dispatches cart"| node_cart_controller
node_routes -->|"dispatches auth"| node_auth_controller
node_routes -->|"dispatches checkout"| node_checkout_controller
node_routes -->|"dispatches account"| node_account_controller
node_routes -->|"dispatches admin"| node_admin_controller
node_product_controller -->|"requests catalog"| node_product_service
node_product_service -->|"delegates queries"| node_product_repository
node_product_repository -->|"queries through"| node_database_config
node_cart_controller -->|"reads and writes"| node_database_config
node_auth_controller -->|"merges guest cart"| node_cart_controller
node_auth_controller -->|"checks and creates accounts"| node_database_config
node_checkout_controller -->|"places orders"| node_order_service
node_account_controller -->|"accesses orders"| node_order_service
node_admin_controller -->|"updates order status"| node_order_service
node_admin_controller -->|"manages records"| node_database_config
node_order_service -->|"runs transactions"| node_database_config
node_database_config -->|"connects and queries"| node_sqlserver
node_auth_middleware -->|"checks account status"| node_database_config
node_app -->|"installs session context"| node_auth_middleware
node_app -->|"renders server pages"| node_views

click node_app "https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/app.js"
click node_routes "https://github.com/dungtttd01702-coder/vamos-store/tree/main/src/routes"
click node_views "https://github.com/dungtttd01702-coder/vamos-store/tree/main/src/views/pages"
click node_product_controller "https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/controllers/product.controller.js"
click node_product_service "https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/services/product.service.js"
click node_product_repository "https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/models/repositories/product.repository.js"
click node_cart_controller "https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/controllers/cart.controller.js"
click node_auth_controller "https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/controllers/auth.controller.js"
click node_auth_middleware "https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/middlewares/auth.middleware.js"
click node_checkout_controller "https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/controllers/checkout.controller.js"
click node_order_service "https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/services/order.service.js"
click node_account_controller "https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/controllers/account.controller.js"
click node_admin_controller "https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/controllers/admin.controller.js"
click node_database_config "https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/config/database.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_app,node_routes,node_views toneBlue
class node_product_controller,node_product_service,node_product_repository,node_cart_controller,node_auth_controller toneAmber
class node_checkout_controller,node_order_service,node_account_controller toneMint
class node_admin_controller toneRose
class node_auth_middleware,node_database_config,node_sqlserver,node_browser toneIndigo
```

## Components

### Web entry

- [Express application](https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/app.js): `src/app.js`
- [HTTP routes](https://github.com/dungtttd01702-coder/vamos-store/tree/main/src/routes): `src/routes`
- [Pug pages](https://github.com/dungtttd01702-coder/vamos-store/tree/main/src/views/pages): `src/views/pages`

### Shopping

- [Product browsing](https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/controllers/product.controller.js): `src/controllers/product.controller.js`
- [Catalog service](https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/services/product.service.js): `src/services/product.service.js`
- [Product repository](https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/models/repositories/product.repository.js): `src/models/repositories/product.repository.js`
- [Cart management](https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/controllers/cart.controller.js): `src/controllers/cart.controller.js`
- [Account access](https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/controllers/auth.controller.js): `src/controllers/auth.controller.js`

### Orders

- [Checkout](https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/controllers/checkout.controller.js): `src/controllers/checkout.controller.js`
- [Order lifecycle](https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/services/order.service.js): `src/services/order.service.js`
- [Customer orders](https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/controllers/account.controller.js): `src/controllers/account.controller.js`

### Administration

- [Admin operations](https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/controllers/admin.controller.js): `src/controllers/admin.controller.js`

### Shared infrastructure

- [Session and access checks](https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/middlewares/auth.middleware.js): `src/middlewares/auth.middleware.js`
- [Database access](https://github.com/dungtttd01702-coder/vamos-store/blob/main/src/config/database.js): `src/config/database.js`
- **Microsoft SQL Server**

### Other components

- **Shopper or admin**

## Connections

- Shopper or admin → Express application: sends requests (evidence: `README.md`)
- Express application → HTTP routes: mounts routes (evidence: `src/app.js`)
- HTTP routes → Product browsing: dispatches product (evidence: `src/routes/product.routes.js`)
- HTTP routes → Cart management: dispatches cart (evidence: `src/routes/cart.routes.js`)
- HTTP routes → Account access: dispatches auth (evidence: `src/routes/auth.routes.js`)
- HTTP routes → Checkout: dispatches checkout (evidence: `src/routes/checkout.routes.js`)
- HTTP routes → Customer orders: dispatches account (evidence: `src/routes/account.routes.js`)
- HTTP routes → Admin operations: dispatches admin (evidence: `src/routes/admin.routes.js`)
- Product browsing → Catalog service: requests catalog (evidence: `src/controllers/product.controller.js`)
- Catalog service → Product repository: delegates queries (evidence: `src/services/product.service.js`)
- Product repository → Database access: queries through (evidence: `src/models/repositories/product.repository.js`)
- Cart management → Database access: reads and writes (evidence: `src/controllers/cart.controller.js`)
- Account access → Cart management: merges guest cart (evidence: `src/controllers/auth.controller.js`)
- Account access → Database access: checks and creates accounts (evidence: `src/controllers/auth.controller.js`)
- Checkout → Order lifecycle: places orders (evidence: `src/controllers/checkout.controller.js`)
- Customer orders → Order lifecycle: accesses orders (evidence: `src/controllers/account.controller.js`)
- Admin operations → Order lifecycle: updates order status (evidence: `src/controllers/admin.controller.js`)
- Admin operations → Database access: manages records (evidence: `src/controllers/admin.controller.js`)
- Order lifecycle → Database access: runs transactions (evidence: `src/services/order.service.js`)
- Database access → Microsoft SQL Server: connects and queries (evidence: `src/config/database.js`)
- Session and access checks → Database access: checks account status (evidence: `src/middlewares/auth.middleware.js`)
- Express application → Session and access checks: installs session context (evidence: `src/app.js`)
- Express application → Pug pages: renders server pages (evidence: `README.md`)
