# quoctrinh1011/cnpm-backup architecture

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

- Interactive diagram: https://gitdiagram.com/quoctrinh1011/cnpm-backup
- Repository: https://github.com/quoctrinh1011/cnpm-backup

## Overview

ANH LỚN SHOP combines a customer storefront with separate Admin and Manager portals over a shared Spring backend and PostgreSQL. The customer journey runs from product discovery and cart through checkout/payment, order follow-up, and post-sale feedback or support; Manager workflows add customer care, surveys, inventory, and reporting, while Admin governs internal accounts and audit. Source excerpts confirm selected auth, order, survey, and Manager API links; other feature connections are shown only where the README documents them.

Main entry points: [`frontend/src/api/manager-api.js`](https://github.com/quoctrinh1011/cnpm-backup/blob/main/frontend/src/api/manager-api.js) (Manager API client), [`frontend/src/api/api.js`](https://github.com/quoctrinh1011/cnpm-backup/blob/main/frontend/src/api/api.js) (Customer API client), [`backend/src/main/java/com/htttdn/crm/service/OrderService.java`](https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/service/OrderService.java) (Order lifecycle), [`backend/src/main/java/com/htttdn/crm/service/PaymentCollectionService.java`](https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/service/PaymentCollectionService.java) (Payment handling)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_customer["Customer commerce"]
  node_storefront["Storefront<br/>[App.jsx]"]
  node_customer_api["Customer API client<br/>[api.js]"]
end

subgraph group_staff["Staff portals"]
  node_manager_portal["Manager portal<br/>[ManagerApp.jsx]"]
  node_manager_api["Manager API client<br/>[manager-api.js]"]
  node_admin_portal["Admin portal<br/>[AdminApp.jsx]"]
end

subgraph group_backend["Backend services"]
  node_order_flow["Order lifecycle<br/>[OrderService.java]"]
  node_catalog["Catalog and stock"]
  node_payments["Payment handling"]
  node_returns["Returns and refunds"]
  node_crm_care["Customer care"]
  node_surveys["Surveys and rewards"]
  node_analytics["CRM reporting"]
  node_admin_ops["Admin operations"]
end

subgraph group_security["Identity and access"]
  node_auth["Authentication<br/>[AuthService.java]"]
  node_jwt["JWT tokens"]
end

subgraph group_data["Persistence and payments"]
  node_user_entity["User records<br/>[User.java]"]
  node_order_entity["Order records<br/>[Order.java]"]
end

node_customer_actor(("Customer"))
node_manager_actor(("Manager"))
node_admin_actor(("Admin"))
node_postgres[("PostgreSQL")]
node_payos{{"PayOS"}}

node_customer_actor -->|"shops"| node_storefront
node_storefront -->|"requests data"| node_customer_api
node_customer_api -->|"uses shared backend"| node_order_flow
node_customer_api -->|"uses shared backend"| node_catalog
node_customer_api -->|"uses shared backend"| node_surveys
node_manager_actor -->|"operates"| node_manager_portal
node_manager_portal -->|"calls"| node_manager_api
node_manager_api -->|"calls endpoints"| node_order_flow
node_manager_api -->|"uses shared backend"| node_crm_care
node_manager_api -->|"uses shared backend"| node_analytics
node_manager_api -->|"calls endpoints"| node_catalog
node_manager_api -->|"uses shared backend"| node_surveys
node_manager_api -->|"updates returns"| node_returns
node_admin_actor -->|"administers"| node_admin_portal
node_admin_portal -->|"uses shared backend"| node_admin_ops
node_auth -->|"issues tokens"| node_jwt
node_auth -->|"creates accounts"| node_user_entity
node_order_flow -.->|"manages orders"| node_order_entity
node_order_entity -.->|"persists in"| node_postgres
node_user_entity -.->|"persists in"| node_postgres
node_payments -->|"verifies payment"| node_payos
node_payments -.->|"updates payment state"| node_order_flow

click node_storefront "https://github.com/quoctrinh1011/cnpm-backup/blob/main/frontend/src/app/App.jsx"
click node_customer_api "https://github.com/quoctrinh1011/cnpm-backup/blob/main/frontend/src/api/api.js"
click node_manager_portal "https://github.com/quoctrinh1011/cnpm-backup/blob/main/frontend/src/features/manager/ManagerApp.jsx"
click node_manager_api "https://github.com/quoctrinh1011/cnpm-backup/blob/main/frontend/src/api/manager-api.js"
click node_admin_portal "https://github.com/quoctrinh1011/cnpm-backup/blob/main/frontend/src/features/admin/AdminApp.jsx"
click node_order_flow "https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/service/OrderService.java"
click node_catalog "https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/controller/ProductController.java"
click node_payments "https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/service/PaymentCollectionService.java"
click node_returns "https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/service/ReturnManagementService.java"
click node_crm_care "https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/service/CustomerCareService.java"
click node_surveys "https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/controller/SurveyController.java"
click node_analytics "https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/service/AnalyticsService.java"
click node_admin_ops "https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/service/AdminUserService.java"
click node_auth "https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/service/AuthService.java"
click node_jwt "https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/security/JwtTokenService.java"
click node_user_entity "https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/entity/User.java"
click node_order_entity "https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/entity/Order.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_storefront,node_customer_api toneBlue
class node_manager_portal,node_manager_api,node_admin_portal,node_postgres toneAmber
class node_order_flow,node_catalog,node_payments,node_returns,node_crm_care,node_surveys,node_analytics,node_admin_ops toneMint
class node_auth,node_jwt toneRose
class node_user_entity,node_order_entity,node_customer_actor,node_manager_actor,node_admin_actor,node_payos toneIndigo
```

## Components

### Customer commerce

- [Storefront](https://github.com/quoctrinh1011/cnpm-backup/blob/main/frontend/src/app/App.jsx): `frontend/src/app/App.jsx`
- [Customer API client](https://github.com/quoctrinh1011/cnpm-backup/blob/main/frontend/src/api/api.js): `frontend/src/api/api.js`

### Staff portals

- [Manager portal](https://github.com/quoctrinh1011/cnpm-backup/blob/main/frontend/src/features/manager/ManagerApp.jsx): `frontend/src/features/manager/ManagerApp.jsx`
- [Manager API client](https://github.com/quoctrinh1011/cnpm-backup/blob/main/frontend/src/api/manager-api.js): `frontend/src/api/manager-api.js`
- [Admin portal](https://github.com/quoctrinh1011/cnpm-backup/blob/main/frontend/src/features/admin/AdminApp.jsx): `frontend/src/features/admin/AdminApp.jsx`

### Backend services

- [Order lifecycle](https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/service/OrderService.java): `backend/src/main/java/com/htttdn/crm/service/OrderService.java`
- [Catalog and stock](https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/controller/ProductController.java): `backend/src/main/java/com/htttdn/crm/controller/ProductController.java`
- [Payment handling](https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/service/PaymentCollectionService.java): `backend/src/main/java/com/htttdn/crm/service/PaymentCollectionService.java`
- [Returns and refunds](https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/service/ReturnManagementService.java): `backend/src/main/java/com/htttdn/crm/service/ReturnManagementService.java`
- [Customer care](https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/service/CustomerCareService.java): `backend/src/main/java/com/htttdn/crm/service/CustomerCareService.java`
- [Surveys and rewards](https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/controller/SurveyController.java): `backend/src/main/java/com/htttdn/crm/controller/SurveyController.java`
- [CRM reporting](https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/service/AnalyticsService.java): `backend/src/main/java/com/htttdn/crm/service/AnalyticsService.java`
- [Admin operations](https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/service/AdminUserService.java): `backend/src/main/java/com/htttdn/crm/service/AdminUserService.java`

### Identity and access

- [Authentication](https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/service/AuthService.java): `backend/src/main/java/com/htttdn/crm/service/AuthService.java`
- [JWT tokens](https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/security/JwtTokenService.java): `backend/src/main/java/com/htttdn/crm/security/JwtTokenService.java`

### Persistence and payments

- [User records](https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/entity/User.java): `backend/src/main/java/com/htttdn/crm/entity/User.java`
- [Order records](https://github.com/quoctrinh1011/cnpm-backup/blob/main/backend/src/main/java/com/htttdn/crm/entity/Order.java): `backend/src/main/java/com/htttdn/crm/entity/Order.java`

### Other components

- **Customer**
- **Manager**
- **Admin**
- **PostgreSQL**
- **PayOS**

## Connections

- Customer → Storefront: shops (evidence: `README.md`)
- Storefront → Customer API client: requests data (evidence: `frontend/src/app/App.jsx`)
- Customer API client → Order lifecycle: uses shared backend (evidence: `README.md`)
- Customer API client → Catalog and stock: uses shared backend (evidence: `README.md`)
- Customer API client → Surveys and rewards: uses shared backend (evidence: `README.md`)
- Manager → Manager portal: operates (evidence: `README.md`)
- Manager portal → Manager API client: calls (evidence: `frontend/src/features/manager/ManagerApp.jsx`)
- Manager API client → Order lifecycle: calls endpoints (evidence: `frontend/src/api/manager-api.js`)
- Manager API client → Customer care: uses shared backend (evidence: `README.md`)
- Manager API client → CRM reporting: uses shared backend (evidence: `README.md`)
- Manager API client → Catalog and stock: calls endpoints (evidence: `frontend/src/api/manager-api.js`)
- Manager API client → Surveys and rewards: uses shared backend (evidence: `README.md`)
- Manager API client → Returns and refunds: updates returns
- Admin → Admin portal: administers (evidence: `README.md`)
- Admin portal → Admin operations: uses shared backend (evidence: `README.md`)
- Authentication → JWT tokens: issues tokens (evidence: `backend/src/main/java/com/htttdn/crm/service/AuthService.java`)
- Authentication → User records: creates accounts (evidence: `backend/src/main/java/com/htttdn/crm/service/AuthService.java`)
- Order lifecycle → Order records: manages orders (evidence: `backend/src/main/java/com/htttdn/crm/service/OrderService.java`)
- Order records → PostgreSQL: persists in
- User records → PostgreSQL: persists in
- Payment handling → PayOS: verifies payment (evidence: `README.md`)
- Payment handling → Order lifecycle: updates payment state
