# zeetkode/basketball-equipment-shop-system architecture

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

- Interactive diagram: https://gitdiagram.com/zeetkode/basketball-equipment-shop-system
- Repository: https://github.com/zeetkode/basketball-equipment-shop-system

## Overview

This is a web-based inventory and order-management application, with workflows for customer orders, supplier purchasing, shipments, inventory checks, and master data. The principal order workflow enters through the API, is handled by an order controller, and persists through the order model to MySQL; supplier orders and shipments have separate controller/model stages. The frontend pages are present, but their request wiring was not shown, so frontend-to-API links are left unverified. Several route and model relationships are supported by the SOURCE INDEX rather than full excerpts.

Main entry points: [`index.js`](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/index.js) (Express server), [`db.js`](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/db.js) (Core DB pool), [`routes/orderRoutes.js`](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/routes/orderRoutes.js) (Order routes), [`Frontend`](https://github.com/zeetkode/basketball-equipment-shop-system/tree/main/Frontend) (Management pages)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web interface"]
  node_frontend["Management pages"]
end

subgraph group_api["API and workflows"]
  node_server["Express server<br/>[index.js]"]
  node_master_routes["Master-data routes"]
  node_master_controller["Master-data handlers"]
  node_order_routes["Order routes<br/>[orderRoutes.js]"]
  node_order_controller["Order handlers<br/>[orderController.js]"]
  node_supplier_routes["Supplier-order routes"]
  node_supplier_controller["Supplier-order handlers"]
  node_shipment_routes["Shipment routes<br/>[shipmentRoutes.js]"]
  node_shipment_controller["Shipment handlers"]
  node_inventory_routes["Inventory routes<br/>[inventoryRoutes.js]"]
  node_inventory_controller["Inventory handler"]
  node_user_routes["User routes<br/>[userRoutes.js]"]
  node_user_controller["User handlers<br/>[userController.js]"]
end

subgraph group_domain["Domain services"]
  node_reports["Reports<br/>[reports.js]"]
  node_safety_stock["Safety-stock evaluation"]
end

subgraph group_storage["Persistence"]
  node_order_model["Order persistence<br/>[orderModel.js]"]
  node_supplier_model["Supplier-order persistence"]
  node_shipment_model["Shipment persistence<br/>[shipmentModel.js]"]
  node_inventory_model["Inventory queries<br/>[inventoryModel.js]"]
  node_user_model["User persistence<br/>[userModel.js]"]
  node_core_db[("Core DB pool<br/>[db.js]")]
  node_legacy_db[("Legacy DB connection<br/>[db.js]")]
end

node_user(("User"))

node_user -.->|"uses"| node_frontend
node_frontend -.->|"sends requests"| node_server
node_server -->|"mounts"| node_master_routes
node_server -->|"mounts"| node_order_routes
node_server -->|"mounts"| node_supplier_routes
node_server -->|"mounts"| node_shipment_routes
node_server -->|"mounts"| node_inventory_routes
node_server -->|"mounts"| node_user_routes
node_server -->|"mounts"| node_reports
node_master_routes -->|"dispatches"| node_master_controller
node_master_controller -->|"queries"| node_core_db
node_order_routes -->|"dispatches"| node_order_controller
node_order_routes -->|"queries equipment"| node_core_db
node_order_controller -->|"calls"| node_order_model
node_supplier_routes -->|"dispatches"| node_supplier_controller
node_supplier_controller -->|"calls"| node_supplier_model
node_shipment_routes -->|"dispatches"| node_shipment_controller
node_shipment_controller -->|"calls"| node_shipment_model
node_inventory_routes -->|"dispatches"| node_inventory_controller
node_inventory_controller -->|"evaluates"| node_safety_stock
node_safety_stock -->|"reads inventory"| node_inventory_model
node_user_routes -->|"dispatches"| node_user_controller
node_user_controller -->|"calls"| node_user_model
node_reports -->|"queries"| node_core_db
node_order_model -->|"queries"| node_core_db
node_supplier_model -->|"queries"| node_core_db
node_shipment_model -->|"queries"| node_core_db
node_inventory_model -->|"queries"| node_core_db
node_user_model -->|"queries"| node_core_db
node_server -->|"uses"| node_legacy_db

click node_frontend "https://github.com/zeetkode/basketball-equipment-shop-system/tree/main/Frontend"
click node_server "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/index.js"
click node_master_routes "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/routes/masterDataRoutes.js"
click node_master_controller "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/controllers/masterDataController.js"
click node_order_routes "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/routes/orderRoutes.js"
click node_order_controller "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/controllers/orderController.js"
click node_supplier_routes "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/routes/supplierOrderRoutes.js"
click node_supplier_controller "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/controllers/supplierOrderController.js"
click node_shipment_routes "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/routes/shipmentRoutes.js"
click node_shipment_controller "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/controllers/shipmentController.js"
click node_inventory_routes "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/routes/inventoryRoutes.js"
click node_inventory_controller "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/controllers/inventoryController.js"
click node_user_routes "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/routes/userRoutes.js"
click node_user_controller "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/controllers/userController.js"
click node_reports "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/routes/reports.js"
click node_safety_stock "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/services/safetyStockService.js"
click node_order_model "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/models/orderModel.js"
click node_supplier_model "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/models/supplierOrderModel.js"
click node_shipment_model "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/models/shipmentModel.js"
click node_inventory_model "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/models/inventoryModel.js"
click node_user_model "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/models/userModel.js"
click node_core_db "https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/db.js"
click node_legacy_db "https://github.com/zeetkode/basketball-equipment-shop-system/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_frontend,node_user toneBlue
class node_server,node_master_routes,node_master_controller,node_order_routes,node_order_controller,node_supplier_routes,node_supplier_controller,node_shipment_routes,node_shipment_controller,node_inventory_routes,node_inventory_controller,node_user_routes,node_user_controller toneAmber
class node_reports,node_safety_stock toneMint
class node_order_model,node_supplier_model,node_shipment_model,node_inventory_model,node_user_model,node_core_db,node_legacy_db toneRose
```

## Components

### Web interface

- [Management pages](https://github.com/zeetkode/basketball-equipment-shop-system/tree/main/Frontend): `Frontend`

### API and workflows

- [Express server](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/index.js): `index.js`
- [Master-data routes](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/routes/masterDataRoutes.js): `routes/masterDataRoutes.js`
- [Master-data handlers](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/controllers/masterDataController.js): `controllers/masterDataController.js`
- [Order routes](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/routes/orderRoutes.js): `routes/orderRoutes.js`
- [Order handlers](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/controllers/orderController.js): `controllers/orderController.js`
- [Supplier-order routes](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/routes/supplierOrderRoutes.js): `routes/supplierOrderRoutes.js`
- [Supplier-order handlers](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/controllers/supplierOrderController.js): `controllers/supplierOrderController.js`
- [Shipment routes](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/routes/shipmentRoutes.js): `routes/shipmentRoutes.js`
- [Shipment handlers](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/controllers/shipmentController.js): `controllers/shipmentController.js`
- [Inventory routes](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/routes/inventoryRoutes.js): `routes/inventoryRoutes.js`
- [Inventory handler](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/controllers/inventoryController.js): `controllers/inventoryController.js`
- [User routes](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/routes/userRoutes.js): `routes/userRoutes.js`
- [User handlers](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/controllers/userController.js): `controllers/userController.js`

### Domain services

- [Reports](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/routes/reports.js): `routes/reports.js`
- [Safety-stock evaluation](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/services/safetyStockService.js): `services/safetyStockService.js`

### Persistence

- [Order persistence](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/models/orderModel.js): `models/orderModel.js`
- [Supplier-order persistence](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/models/supplierOrderModel.js): `models/supplierOrderModel.js`
- [Shipment persistence](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/models/shipmentModel.js): `models/shipmentModel.js`
- [Inventory queries](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/models/inventoryModel.js): `models/inventoryModel.js`
- [User persistence](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/models/userModel.js): `models/userModel.js`
- [Core DB pool](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/db.js): `db.js`
- [Legacy DB connection](https://github.com/zeetkode/basketball-equipment-shop-system/blob/main/config/db.js): `config/db.js`

### Other components

- **User**

## Connections

- User → Management pages: uses
- Management pages → Express server: sends requests
- Express server → Master-data routes: mounts (evidence: `index.js`)
- Express server → Order routes: mounts (evidence: `index.js`)
- Express server → Supplier-order routes: mounts (evidence: `index.js`)
- Express server → Shipment routes: mounts (evidence: `index.js`)
- Express server → Inventory routes: mounts (evidence: `index.js`)
- Express server → User routes: mounts (evidence: `index.js`)
- Express server → Reports: mounts (evidence: `index.js`)
- Master-data routes → Master-data handlers: dispatches (evidence: `routes/masterDataRoutes.js`)
- Master-data handlers → Core DB pool: queries (evidence: `controllers/masterDataController.js`)
- Order routes → Order handlers: dispatches (evidence: `routes/orderRoutes.js`)
- Order routes → Core DB pool: queries equipment (evidence: `routes/orderRoutes.js`)
- Order handlers → Order persistence: calls (evidence: `controllers/orderController.js`)
- Supplier-order routes → Supplier-order handlers: dispatches (evidence: `routes/supplierOrderRoutes.js`)
- Supplier-order handlers → Supplier-order persistence: calls (evidence: `controllers/supplierOrderController.js`)
- Shipment routes → Shipment handlers: dispatches (evidence: `routes/shipmentRoutes.js`)
- Shipment handlers → Shipment persistence: calls (evidence: `controllers/shipmentController.js`)
- Inventory routes → Inventory handler: dispatches (evidence: `routes/inventoryRoutes.js`)
- Inventory handler → Safety-stock evaluation: evaluates (evidence: `controllers/inventoryController.js`)
- Safety-stock evaluation → Inventory queries: reads inventory (evidence: `services/safetyStockService.js`)
- User routes → User handlers: dispatches (evidence: `routes/userRoutes.js`)
- User handlers → User persistence: calls (evidence: `controllers/userController.js`)
- Reports → Core DB pool: queries (evidence: `routes/reports.js`)
- Order persistence → Core DB pool: queries (evidence: `models/orderModel.js`)
- Supplier-order persistence → Core DB pool: queries (evidence: `models/supplierOrderModel.js`)
- Shipment persistence → Core DB pool: queries (evidence: `models/shipmentModel.js`)
- Inventory queries → Core DB pool: queries (evidence: `models/inventoryModel.js`)
- User persistence → Core DB pool: queries (evidence: `models/userModel.js`)
- Express server → Legacy DB connection: uses (evidence: `index.js`)
