# thanhtu1125/smartcafemanager architecture

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

- Interactive diagram: https://gitdiagram.com/thanhtu1125/smartcafemanager
- Repository: https://github.com/thanhtu1125/smartcafemanager

## Overview

NEO CAFÉ is a café ordering and operations application: customers browse a menu, build a table-linked cart, submit orders, and pay; staff progress orders and manage tables, while administrators manage catalog, people, news, and reporting. The React app routes role-aware screens through a shared API client to Spring controllers and services. Backend entities and repositories provide persistence; WebSocket updates support live table/order activity. The README is empty, so capability coverage relies on the supplied tree and excerpts; some backend wiring is unsampled and shown only where supported.

Main entry points: [`frontend/src/services/apiService.js`](https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/services/apiService.js) (HTTP API client), [`frontend/src/routes/AppRoutes.jsx`](https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/routes/AppRoutes.jsx) (Screen routing), [`backend/src/main/java/com/codegym/backend/repository`](https://github.com/thanhtu1125/smartcafemanager/tree/main/backend/src/main/java/com/codegym/backend/repository) (Data repositories), [`backend/src/main/java/com/codegym/backend/controller/CustomerController.java`](https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/CustomerController.java) (Customer ordering API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Customer experience"]
  node_router["Screen routing<br/>[AppRoutes.jsx]"]
  node_menu["Menu and cart<br/>[client-menu.jsx]"]
  node_checkout["Checkout<br/>[checkout.jsx]"]
  node_account_ui["Sign-in and profile<br/>[Login.jsx]"]
  node_news_ui["News screens<br/>[NewsList.jsx]"]
end

subgraph group_operations["Café operations"]
  node_staff_ui["Table operations<br/>[saleManager.jsx]"]
  node_feedback_ui["Feedback manager"]
  node_realtime_ui["Realtime bridge"]
end

subgraph group_management["Administration"]
  node_admin_ui["Admin screens<br/>[AdminItemList.jsx]"]
  node_analytics_ui["Revenue dashboard"]
end

subgraph group_backend["Backend services"]
  node_api_client["HTTP API client<br/>[apiService.js]"]
  node_auth_controller["Authentication API"]
  node_customer_controller["Customer ordering API"]
  node_staff_controller["Staff API"]
  node_payment_controller["Payment API"]
  node_feedback_controller["Feedback API"]
  node_catalog_controller["Catalog and admin APIs"]
  node_news_controller["News API"]
  node_stats_controller["Statistics API"]
  node_order_service["Order and cart logic"]
  node_staff_service["Staff order logic"]
  node_payment_service["Payment logic"]
  node_auth_service["Authentication logic<br/>[AuthService.java]"]
  node_news_service["News logic<br/>[NewsService.java]"]
  node_feedback_service["Feedback logic"]
  node_admin_services["Management logic"]
  node_repositories["Data repositories"]
  node_database[("Application database")]
end

subgraph group_integrations["External systems"]
  node_paypal["PayPal"]
  node_cloudinary["Cloudinary"]
  node_email["Email delivery"]
  node_redis[("Redis OTP store")]
  node_socket(("WebSocket clients"))
end

node_visitor(("Customer or staff"))

node_visitor -->|"opens screens"| node_router
node_router -->|"routes to"| node_menu
node_router -->|"routes to"| node_account_ui
node_router -->|"routes to"| node_news_ui
node_router -->|"routes to"| node_staff_ui
node_router -->|"routes to"| node_feedback_ui
node_router -->|"routes to"| node_admin_ui
node_router -->|"routes to"| node_analytics_ui
node_menu -->|"requests menu/cart"| node_api_client
node_checkout -->|"submits payment"| node_api_client
node_account_ui -->|"sends credentials"| node_api_client
node_news_ui -->|"requests news"| node_api_client
node_staff_ui -->|"requests table actions"| node_api_client
node_feedback_ui -->|"loads feedback"| node_api_client
node_admin_ui -->|"requests management"| node_api_client
node_analytics_ui -->|"requests statistics"| node_api_client
node_api_client -->|"HTTP requests"| node_customer_controller
node_api_client -->|"HTTP requests"| node_auth_controller
node_api_client -->|"HTTP requests"| node_payment_controller
node_api_client -->|"HTTP requests"| node_staff_controller
node_api_client -->|"HTTP requests"| node_feedback_controller
node_api_client -->|"HTTP requests"| node_catalog_controller
node_api_client -->|"HTTP requests"| node_news_controller
node_api_client -->|"HTTP requests"| node_stats_controller
node_customer_controller -->|"manages cart"| node_order_service
node_customer_controller -->|"reads table info"| node_staff_service
node_staff_controller -->|"manages orders"| node_staff_service
node_payment_controller -->|"processes payments"| node_payment_service
node_auth_controller -->|"authenticates users"| node_auth_service
node_news_controller -->|"manages news"| node_news_service
node_feedback_controller -->|"handles feedback"| node_feedback_service
node_catalog_controller -->|"manages catalog"| node_admin_services
node_stats_controller -->|"gets statistics"| node_admin_services
node_order_service -->|"persists orders"| node_repositories
node_staff_service -->|"reads and updates"| node_repositories
node_payment_service -->|"updates payment records"| node_repositories
node_auth_service -->|"reads accounts"| node_repositories
node_news_service -->|"reads and writes news"| node_repositories
node_feedback_service -->|"reads and writes feedback"| node_repositories
node_admin_services -->|"accesses records"| node_repositories
node_repositories -->|"reads and writes"| node_database
node_payment_service -.->|"payment integration"| node_paypal
node_admin_services -.->|"uploads media"| node_cloudinary
node_auth_service -.->|"sends OTP"| node_email
node_auth_service -->|"stores OTP tokens"| node_redis
node_customer_controller -->|"publishes table events"| node_socket
node_staff_controller -->|"publishes order updates"| node_socket
node_realtime_ui -->|"subscribes to updates"| node_socket

click node_router "https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/routes/AppRoutes.jsx"
click node_menu "https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/pages/client-menu/client-menu.jsx"
click node_checkout "https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/components/checkout.jsx"
click node_account_ui "https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/pages/auth/Login.jsx"
click node_news_ui "https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/pages/news/NewsList.jsx"
click node_staff_ui "https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/pages/sale-manager/saleManager.jsx"
click node_feedback_ui "https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/pages/feedback-manager/feedbackManager.jsx"
click node_realtime_ui "https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/components/SocketRealtimeBridge.jsx"
click node_admin_ui "https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/pages/admin-items/AdminItemList.jsx"
click node_analytics_ui "https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/pages/RevenueDashboard/RevenueDashboard.jsx"
click node_api_client "https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/services/apiService.js"
click node_auth_controller "https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/AuthController.java"
click node_customer_controller "https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/CustomerController.java"
click node_staff_controller "https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/StaffController.java"
click node_payment_controller "https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/PaymentController.java"
click node_feedback_controller "https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/FeedbackController.java"
click node_catalog_controller "https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/AdminItemController.java"
click node_news_controller "https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/NewsController.java"
click node_stats_controller "https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/StatisticController.java"
click node_order_service "https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/service/CartServiceImpl.java"
click node_staff_service "https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/service/StaffOrderServiceImpl.java"
click node_payment_service "https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/service/PaymentServiceImpl.java"
click node_auth_service "https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/service/AuthService.java"
click node_news_service "https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/service/NewsService.java"
click node_feedback_service "https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/service/FeedbackServiceImpl.java"
click node_admin_services "https://github.com/thanhtu1125/smartcafemanager/tree/main/backend/src/main/java/com/codegym/backend/service"
click node_repositories "https://github.com/thanhtu1125/smartcafemanager/tree/main/backend/src/main/java/com/codegym/backend/repository"
click node_database "https://github.com/thanhtu1125/smartcafemanager/tree/main/backend/src/main/java/com/codegym/backend/entity"

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_router,node_menu,node_checkout,node_account_ui,node_news_ui toneBlue
class node_staff_ui,node_feedback_ui,node_realtime_ui toneAmber
class node_admin_ui,node_analytics_ui toneMint
class node_api_client,node_auth_controller,node_customer_controller,node_staff_controller,node_payment_controller,node_feedback_controller,node_catalog_controller,node_news_controller,node_stats_controller,node_order_service,node_staff_service,node_payment_service,node_auth_service,node_news_service,node_feedback_service,node_admin_services,node_repositories,node_database toneRose
class node_paypal,node_cloudinary,node_email,node_redis,node_socket,node_visitor toneIndigo
```

## Components

### Customer experience

- [Screen routing](https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/routes/AppRoutes.jsx): `frontend/src/routes/AppRoutes.jsx`
- [Menu and cart](https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/pages/client-menu/client-menu.jsx): `frontend/src/pages/client-menu/client-menu.jsx`
- [Checkout](https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/components/checkout.jsx): `frontend/src/components/checkout.jsx`
- [Sign-in and profile](https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/pages/auth/Login.jsx): `frontend/src/pages/auth/Login.jsx`
- [News screens](https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/pages/news/NewsList.jsx): `frontend/src/pages/news/NewsList.jsx`

### Café operations

- [Table operations](https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/pages/sale-manager/saleManager.jsx): `frontend/src/pages/sale-manager/saleManager.jsx`
- [Feedback manager](https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/pages/feedback-manager/feedbackManager.jsx): `frontend/src/pages/feedback-manager/feedbackManager.jsx`
- [Realtime bridge](https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/components/SocketRealtimeBridge.jsx): `frontend/src/components/SocketRealtimeBridge.jsx`

### Administration

- [Admin screens](https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/pages/admin-items/AdminItemList.jsx): `frontend/src/pages/admin-items/AdminItemList.jsx`
- [Revenue dashboard](https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/pages/RevenueDashboard/RevenueDashboard.jsx): `frontend/src/pages/RevenueDashboard/RevenueDashboard.jsx`

### Backend services

- [HTTP API client](https://github.com/thanhtu1125/smartcafemanager/blob/main/frontend/src/services/apiService.js): `frontend/src/services/apiService.js`
- [Authentication API](https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/AuthController.java): `backend/src/main/java/com/codegym/backend/controller/AuthController.java`
- [Customer ordering API](https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/CustomerController.java): `backend/src/main/java/com/codegym/backend/controller/CustomerController.java`
- [Staff API](https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/StaffController.java): `backend/src/main/java/com/codegym/backend/controller/StaffController.java`
- [Payment API](https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/PaymentController.java): `backend/src/main/java/com/codegym/backend/controller/PaymentController.java`
- [Feedback API](https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/FeedbackController.java): `backend/src/main/java/com/codegym/backend/controller/FeedbackController.java`
- [Catalog and admin APIs](https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/AdminItemController.java): `backend/src/main/java/com/codegym/backend/controller/AdminItemController.java`
- [News API](https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/NewsController.java): `backend/src/main/java/com/codegym/backend/controller/NewsController.java`
- [Statistics API](https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/controller/StatisticController.java): `backend/src/main/java/com/codegym/backend/controller/StatisticController.java`
- [Order and cart logic](https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/service/CartServiceImpl.java): `backend/src/main/java/com/codegym/backend/service/CartServiceImpl.java`
- [Staff order logic](https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/service/StaffOrderServiceImpl.java): `backend/src/main/java/com/codegym/backend/service/StaffOrderServiceImpl.java`
- [Payment logic](https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/service/PaymentServiceImpl.java): `backend/src/main/java/com/codegym/backend/service/PaymentServiceImpl.java`
- [Authentication logic](https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/service/AuthService.java): `backend/src/main/java/com/codegym/backend/service/AuthService.java`
- [News logic](https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/service/NewsService.java): `backend/src/main/java/com/codegym/backend/service/NewsService.java`
- [Feedback logic](https://github.com/thanhtu1125/smartcafemanager/blob/main/backend/src/main/java/com/codegym/backend/service/FeedbackServiceImpl.java): `backend/src/main/java/com/codegym/backend/service/FeedbackServiceImpl.java`
- [Management logic](https://github.com/thanhtu1125/smartcafemanager/tree/main/backend/src/main/java/com/codegym/backend/service): `backend/src/main/java/com/codegym/backend/service`
- [Data repositories](https://github.com/thanhtu1125/smartcafemanager/tree/main/backend/src/main/java/com/codegym/backend/repository): `backend/src/main/java/com/codegym/backend/repository`
- [Application database](https://github.com/thanhtu1125/smartcafemanager/tree/main/backend/src/main/java/com/codegym/backend/entity): `backend/src/main/java/com/codegym/backend/entity`

### External systems

- **PayPal**
- **Cloudinary**
- **Email delivery**
- **Redis OTP store**
- **WebSocket clients**

### Other components

- **Customer or staff**

## Connections

- Customer or staff → Screen routing: opens screens
- Screen routing → Menu and cart: routes to
- Screen routing → Sign-in and profile: routes to
- Screen routing → News screens: routes to
- Screen routing → Table operations: routes to
- Screen routing → Feedback manager: routes to
- Screen routing → Admin screens: routes to
- Screen routing → Revenue dashboard: routes to
- Menu and cart → HTTP API client: requests menu/cart
- Checkout → HTTP API client: submits payment
- Sign-in and profile → HTTP API client: sends credentials
- News screens → HTTP API client: requests news
- Table operations → HTTP API client: requests table actions
- Feedback manager → HTTP API client: loads feedback
- Admin screens → HTTP API client: requests management
- Revenue dashboard → HTTP API client: requests statistics
- HTTP API client → Customer ordering API: HTTP requests
- HTTP API client → Authentication API: HTTP requests
- HTTP API client → Payment API: HTTP requests
- HTTP API client → Staff API: HTTP requests
- HTTP API client → Feedback API: HTTP requests
- HTTP API client → Catalog and admin APIs: HTTP requests
- HTTP API client → News API: HTTP requests
- HTTP API client → Statistics API: HTTP requests
- Customer ordering API → Order and cart logic: manages cart
- Customer ordering API → Staff order logic: reads table info
- Staff API → Staff order logic: manages orders
- Payment API → Payment logic: processes payments
- Authentication API → Authentication logic: authenticates users
- News API → News logic: manages news
- Feedback API → Feedback logic: handles feedback
- Catalog and admin APIs → Management logic: manages catalog
- Statistics API → Management logic: gets statistics
- Order and cart logic → Data repositories: persists orders
- Staff order logic → Data repositories: reads and updates
- Payment logic → Data repositories: updates payment records
- Authentication logic → Data repositories: reads accounts
- News logic → Data repositories: reads and writes news
- Feedback logic → Data repositories: reads and writes feedback
- Management logic → Data repositories: accesses records
- Data repositories → Application database: reads and writes
- Payment logic → PayPal: payment integration
- Management logic → Cloudinary: uploads media
- Authentication logic → Email delivery: sends OTP
- Authentication logic → Redis OTP store: stores OTP tokens
- Customer ordering API → WebSocket clients: publishes table events
- Staff API → WebSocket clients: publishes order updates
- Realtime bridge → WebSocket clients: subscribes to updates
