# giahuytruonn/7-flash-delivery architecture

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

- Interactive diagram: https://gitdiagram.com/giahuytruonn/7-flash-delivery
- Repository: https://github.com/giahuytruonn/7-flash-delivery

## Overview

7-Flash Delivery is a retail storefront and management system. Customers browse products, maintain a cart, create an order, and initiate payment; the backend then reserves inventory asynchronously and tracks payment status, while administrators manage products and orders. Authentication, catalog, order/payment, and inventory/event handling are distinct stages. The graph reflects sampled calls and explicit README flows; several frontend pages and event listeners were not sampled, so their internal connections are omitted where unverified.

Main entry points: [`backend/src/main/java/com/sevenelevenvn/module/order/service/OrderService.java`](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/order/service/OrderService.java) (Order Service), [`frontend/src/services/api.js`](https://github.com/giahuytruonn/7-flash-delivery/blob/main/frontend/src/services/api.js) (API Client), [`frontend/src/App.jsx`](https://github.com/giahuytruonn/7-flash-delivery/blob/main/frontend/src/App.jsx) (Route App), [`backend/src/main/java/com/sevenelevenvn/module/product/controller/ProductController.java`](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/product/controller/ProductController.java) (Product API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Storefront Client"]
  node_app["Route App<br/>[App.jsx]"]
  node_authui["Auth Context<br/>[AuthContext.jsx]"]
  node_cart["Cart Context<br/>[CartContext.jsx]"]
  node_shop["Shop &amp; Cart Pages"]
  node_adminui["Admin Pages"]
  node_api["API Client<br/>[api.js]"]
end

subgraph group_identity["Identity &amp; Access"]
  node_authcontroller["Auth API"]
  node_authservice["Authentication<br/>[AuthService.java]"]
  node_users[("User Records")]
  node_jwt["JWT Utilities<br/>[JwtUtils.java]"]
end

subgraph group_catalog["Product Catalog"]
  node_productapi["Product API"]
  node_productservice["Catalog Service"]
  node_products[("Product Records")]
  node_imageupload["Image Upload"]
end

subgraph group_commerce["Orders &amp; Payments"]
  node_orderapi["Order API"]
  node_orderservice["Order Service<br/>[OrderService.java]"]
  node_orders[("Order Records")]
  node_payment["Payment API"]
  node_redis[("Redis State")]
end

subgraph group_inventory["Inventory &amp; Events"]
  node_inventorylistener["Inventory Listener"]
  node_rabbitbridge["RabbitMQ Bridge"]
end

node_customer(("Customer / Admin"))
node_cloudinary["Cloudinary"]
node_payos["PayOS Gateway"]
node_rabbitmq["RabbitMQ"]
node_response["API Responses<br/>[ApiResponse.java]"]

node_customer -->|"uses"| node_app
node_app -->|"provides context"| node_authui
node_app -->|"provides context"| node_cart
node_app -->|"routes to"| node_shop
node_app -->|"routes to"| node_adminui
node_authui -->|"requests"| node_api
node_cart -->|"creates orders"| node_api
node_shop -.->|"uses cart"| node_cart
node_adminui -->|"requests"| node_api
node_api -.->|"calls auth"| node_authcontroller
node_api -.->|"calls catalog"| node_productapi
node_api -.->|"calls orders"| node_orderapi
node_api -.->|"calls payments"| node_payment
node_authcontroller -->|"delegates to"| node_authservice
node_authservice -->|"reads and writes"| node_users
node_authservice -->|"generates token"| node_jwt
node_productapi -->|"delegates to"| node_productservice
node_productapi -->|"uploads images"| node_imageupload
node_imageupload -.->|"uploads to"| node_cloudinary
node_productservice -->|"queries and saves"| node_products
node_productapi -->|"returns"| node_response
node_orderapi -->|"delegates to"| node_orderservice
node_orderservice -->|"reads product data"| node_products
node_orderservice -->|"saves order"| node_orders
node_orderservice -.->|"publishes deduction event"| node_inventorylistener
node_payment -->|"reads and updates"| node_orders
node_payment -.->|"stores mapping"| node_redis
node_payment -->|"creates payment link"| node_payos
node_orderservice -.->|"looks up mapping"| node_redis
node_orderservice -->|"polls status"| node_payos
node_orderservice -.->|"publishes restore event"| node_inventorylistener
node_rabbitbridge -.->|"publishes events"| node_rabbitmq
node_customer -.->|"browses catalog"| node_productapi

click node_app "https://github.com/giahuytruonn/7-flash-delivery/blob/main/frontend/src/App.jsx"
click node_authui "https://github.com/giahuytruonn/7-flash-delivery/blob/main/frontend/src/context/AuthContext.jsx"
click node_cart "https://github.com/giahuytruonn/7-flash-delivery/blob/main/frontend/src/context/CartContext.jsx"
click node_shop "https://github.com/giahuytruonn/7-flash-delivery/tree/main/frontend/src/pages"
click node_adminui "https://github.com/giahuytruonn/7-flash-delivery/tree/main/frontend/src/pages"
click node_api "https://github.com/giahuytruonn/7-flash-delivery/blob/main/frontend/src/services/api.js"
click node_authcontroller "https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/user/controller/AuthController.java"
click node_authservice "https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/user/service/AuthService.java"
click node_users "https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/user/repository/UserRepository.java"
click node_jwt "https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/infrastructure/security/JwtUtils.java"
click node_productapi "https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/product/controller/ProductController.java"
click node_productservice "https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/product/service/ProductService.java"
click node_products "https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/product/repository/ProductRepository.java"
click node_imageupload "https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/product/service/ImageUploadService.java"
click node_orderapi "https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/order/controller/OrderController.java"
click node_orderservice "https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/order/service/OrderService.java"
click node_orders "https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/order/repository/OrderRepository.java"
click node_payment "https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/order/controller/PaymentController.java"
click node_redis "https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/order/controller/PaymentController.java"
click node_inventorylistener "https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/product/listener/InventoryEventListener.java"
click node_rabbitbridge "https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/infrastructure/messaging/RabbitMQInventoryBridge.java"
click node_response "https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/common/ApiResponse.java"

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_authui,node_cart,node_shop,node_adminui,node_api toneBlue
class node_authcontroller,node_authservice,node_users,node_jwt toneAmber
class node_productapi,node_productservice,node_products,node_imageupload,node_response toneMint
class node_orderapi,node_orderservice,node_orders,node_payment,node_redis toneRose
class node_inventorylistener,node_rabbitbridge,node_customer,node_cloudinary,node_payos,node_rabbitmq toneIndigo
```

## Components

### Storefront Client

- [Route App](https://github.com/giahuytruonn/7-flash-delivery/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Auth Context](https://github.com/giahuytruonn/7-flash-delivery/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Cart Context](https://github.com/giahuytruonn/7-flash-delivery/blob/main/frontend/src/context/CartContext.jsx): `frontend/src/context/CartContext.jsx`
- [Shop & Cart Pages](https://github.com/giahuytruonn/7-flash-delivery/tree/main/frontend/src/pages): `frontend/src/pages`
- [Admin Pages](https://github.com/giahuytruonn/7-flash-delivery/tree/main/frontend/src/pages): `frontend/src/pages`
- [API Client](https://github.com/giahuytruonn/7-flash-delivery/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`

### Identity & Access

- [Auth API](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/user/controller/AuthController.java): `backend/src/main/java/com/sevenelevenvn/module/user/controller/AuthController.java`
- [Authentication](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/user/service/AuthService.java): `backend/src/main/java/com/sevenelevenvn/module/user/service/AuthService.java`
- [User Records](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/user/repository/UserRepository.java): `backend/src/main/java/com/sevenelevenvn/module/user/repository/UserRepository.java`
- [JWT Utilities](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/infrastructure/security/JwtUtils.java): `backend/src/main/java/com/sevenelevenvn/infrastructure/security/JwtUtils.java`

### Product Catalog

- [Product API](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/product/controller/ProductController.java): `backend/src/main/java/com/sevenelevenvn/module/product/controller/ProductController.java`
- [Catalog Service](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/product/service/ProductService.java): `backend/src/main/java/com/sevenelevenvn/module/product/service/ProductService.java`
- [Product Records](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/product/repository/ProductRepository.java): `backend/src/main/java/com/sevenelevenvn/module/product/repository/ProductRepository.java`
- [Image Upload](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/product/service/ImageUploadService.java): `backend/src/main/java/com/sevenelevenvn/module/product/service/ImageUploadService.java`

### Orders & Payments

- [Order API](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/order/controller/OrderController.java): `backend/src/main/java/com/sevenelevenvn/module/order/controller/OrderController.java`
- [Order Service](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/order/service/OrderService.java): `backend/src/main/java/com/sevenelevenvn/module/order/service/OrderService.java`
- [Order Records](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/order/repository/OrderRepository.java): `backend/src/main/java/com/sevenelevenvn/module/order/repository/OrderRepository.java`
- [Payment API](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/order/controller/PaymentController.java): `backend/src/main/java/com/sevenelevenvn/module/order/controller/PaymentController.java`
- [Redis State](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/order/controller/PaymentController.java): `backend/src/main/java/com/sevenelevenvn/module/order/controller/PaymentController.java`

### Inventory & Events

- [Inventory Listener](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/module/product/listener/InventoryEventListener.java): `backend/src/main/java/com/sevenelevenvn/module/product/listener/InventoryEventListener.java`
- [RabbitMQ Bridge](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/infrastructure/messaging/RabbitMQInventoryBridge.java): `backend/src/main/java/com/sevenelevenvn/infrastructure/messaging/RabbitMQInventoryBridge.java`

### Other components

- **Customer / Admin**
- **Cloudinary**
- **PayOS Gateway**
- **RabbitMQ**
- [API Responses](https://github.com/giahuytruonn/7-flash-delivery/blob/main/backend/src/main/java/com/sevenelevenvn/common/ApiResponse.java): `backend/src/main/java/com/sevenelevenvn/common/ApiResponse.java`

## Connections

- Customer / Admin → Route App: uses
- Route App → Auth Context: provides context (evidence: `frontend/src/App.jsx`)
- Route App → Cart Context: provides context (evidence: `frontend/src/App.jsx`)
- Route App → Shop & Cart Pages: routes to (evidence: `frontend/src/App.jsx`)
- Route App → Admin Pages: routes to (evidence: `frontend/src/App.jsx`)
- Auth Context → API Client: requests (evidence: `frontend/src/context/AuthContext.jsx`)
- Cart Context → API Client: creates orders (evidence: `frontend/src/context/CartContext.jsx`)
- Shop & Cart Pages → Cart Context: uses cart (evidence: `frontend/src/pages/Cart.jsx`)
- Admin Pages → API Client: requests (evidence: `frontend/src/pages/ProductManagement.jsx`)
- API Client → Auth API: calls auth
- API Client → Product API: calls catalog
- API Client → Order API: calls orders
- API Client → Payment API: calls payments
- Auth API → Authentication: delegates to (evidence: `backend/src/main/java/com/sevenelevenvn/module/user/controller/AuthController.java`)
- Authentication → User Records: reads and writes (evidence: `backend/src/main/java/com/sevenelevenvn/module/user/service/AuthService.java`)
- Authentication → JWT Utilities: generates token (evidence: `backend/src/main/java/com/sevenelevenvn/module/user/service/AuthService.java`)
- Product API → Catalog Service: delegates to (evidence: `backend/src/main/java/com/sevenelevenvn/module/product/controller/ProductController.java`)
- Product API → Image Upload: uploads images (evidence: `backend/src/main/java/com/sevenelevenvn/module/product/controller/ProductController.java`)
- Image Upload → Cloudinary: uploads to
- Catalog Service → Product Records: queries and saves (evidence: `backend/src/main/java/com/sevenelevenvn/module/product/service/ProductService.java`)
- Product API → API Responses: returns (evidence: `backend/src/main/java/com/sevenelevenvn/module/product/controller/ProductController.java`)
- Order API → Order Service: delegates to (evidence: `backend/src/main/java/com/sevenelevenvn/module/order/controller/OrderController.java`)
- Order Service → Product Records: reads product data (evidence: `backend/src/main/java/com/sevenelevenvn/module/order/service/OrderService.java`)
- Order Service → Order Records: saves order (evidence: `backend/src/main/java/com/sevenelevenvn/module/order/service/OrderService.java`)
- Order Service → Inventory Listener: publishes deduction event
- Payment API → Order Records: reads and updates (evidence: `backend/src/main/java/com/sevenelevenvn/module/order/controller/PaymentController.java`)
- Payment API → Redis State: stores mapping (evidence: `backend/src/main/java/com/sevenelevenvn/module/order/controller/PaymentController.java`)
- Payment API → PayOS Gateway: creates payment link (evidence: `backend/src/main/java/com/sevenelevenvn/module/order/controller/PaymentController.java`)
- Order Service → Redis State: looks up mapping
- Order Service → PayOS Gateway: polls status (evidence: `backend/src/main/java/com/sevenelevenvn/module/order/service/OrderService.java`)
- Order Service → Inventory Listener: publishes restore event
- RabbitMQ Bridge → RabbitMQ: publishes events
- Customer / Admin → Product API: browses catalog
