# hiandy98/lunch-order-system architecture

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

- Interactive diagram: https://gitdiagram.com/hiandy98/lunch-order-system
- Repository: https://github.com/hiandy98/lunch-order-system

## Overview

This repository is primarily a Spring backend for user accounts, authentication, and store/menu records. The visible user workflow supports registration and account maintenance; the store workflow supports create, retrieve, update, and delete. The frontend source is a Vite/React starter screen rather than a lunch-ordering interface. Source excerpts establish controller-to-service calls and sampled persistence/authentication actions; wiring not demonstrated by excerpts is left out.

Main entry points: [`backend/src/main/java/com/lunch/ops/backend/user/controller/UserController.java`](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/user/controller/UserController.java) (User Controller), [`backend/src/main/java/com/lunch/ops/backend/user/service/impl/DefaultUserService.java`](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/user/service/impl/DefaultUserService.java) (User Service), [`backend/src/main/java/com/lunch/ops/backend/store/controller/StoreController.java`](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/store/controller/StoreController.java) (Store Controller), [`backend/src/main/java/com/lunch/ops/backend/store/service/impl/DefaultStoreService.java`](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/store/service/impl/DefaultStoreService.java) (Store Service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_users["User Accounts"]
  node_user_api["User Controller"]
  node_registration["Registration Service"]
  node_user_service["User Service"]
  node_user_store[("User Repository")]
  node_user_model["User Entity<br/>[User.java]"]
end

subgraph group_stores["Store Catalog"]
  node_store_api["Store Controller"]
  node_store_service["Store Service"]
  node_store_repo[("Store Repository")]
  node_store_model["Store and Menu<br/>[Store.java]"]
end

subgraph group_security["Authentication"]
  node_auth_api["Auth Controller"]
  node_auth_service["Auth Service"]
  node_user_details["User Details Lookup"]
  node_jwt_filter["JWT Filter"]
  node_json_filter["JSON Login Filter"]
  node_jwt_utils["JWT Utilities<br/>[JwtUtils.java]"]
  node_security_config["Security Configuration"]
end

node_client(("API Client"))
node_errors["Error Handling"]

node_client -->|"sends account requests"| node_user_api
node_client -->|"requests logout"| node_auth_api
node_client -->|"sends store requests"| node_store_api
node_user_api -->|"registers users"| node_registration
node_user_api -->|"manages accounts"| node_user_service
node_registration -->|"checks and saves"| node_user_store
node_user_service -->|"reads and writes"| node_user_store
node_user_service -->|"logs out on account changes"| node_auth_service
node_user_details -->|"looks up users"| node_user_store
node_auth_api -->|"logs out"| node_auth_service
node_auth_service -->|"clears auth cookie"| node_client
node_store_api -->|"manages stores"| node_store_service
node_store_service -->|"reads and writes"| node_store_repo
node_store_service -->|"creates and updates"| node_store_model
node_user_api -->|"errors handled by"| node_errors
node_store_api -->|"errors handled by"| node_errors

click node_user_api "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/user/controller/UserController.java"
click node_registration "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/user/service/impl/DefaultUserRegisterService.java"
click node_user_service "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/user/service/impl/DefaultUserService.java"
click node_user_store "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/user/repository/UserRepository.java"
click node_user_model "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/user/entity/User.java"
click node_auth_api "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/user/controller/AuthController.java"
click node_auth_service "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/user/service/impl/DefaultAuthService.java"
click node_user_details "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/security/CustomUserDetailsService.java"
click node_jwt_filter "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/security/JwtAuthenticationFilter.java"
click node_json_filter "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/security/JsonAuthenticationFilter.java"
click node_jwt_utils "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/security/JwtUtils.java"
click node_security_config "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/config/SecurityConfig.java"
click node_store_api "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/store/controller/StoreController.java"
click node_store_service "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/store/service/impl/DefaultStoreService.java"
click node_store_repo "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/store/repository/StoreRepository.java"
click node_store_model "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/store/entity/Store.java"
click node_errors "https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/common/exception/GlobalExceptionHandler.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_user_api,node_registration,node_user_service,node_user_store,node_user_model,node_client toneBlue
class node_store_api,node_store_service,node_store_repo,node_store_model toneAmber
class node_auth_api,node_auth_service,node_user_details,node_jwt_filter,node_json_filter,node_jwt_utils,node_security_config toneMint
class node_errors toneTeal
```

## Components

### User Accounts

- [User Controller](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/user/controller/UserController.java): `backend/src/main/java/com/lunch/ops/backend/user/controller/UserController.java`
- [Registration Service](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/user/service/impl/DefaultUserRegisterService.java): `backend/src/main/java/com/lunch/ops/backend/user/service/impl/DefaultUserRegisterService.java`
- [User Service](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/user/service/impl/DefaultUserService.java): `backend/src/main/java/com/lunch/ops/backend/user/service/impl/DefaultUserService.java`
- [User Repository](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/user/repository/UserRepository.java): `backend/src/main/java/com/lunch/ops/backend/user/repository/UserRepository.java`
- [User Entity](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/user/entity/User.java): `backend/src/main/java/com/lunch/ops/backend/user/entity/User.java`

### Store Catalog

- [Store Controller](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/store/controller/StoreController.java): `backend/src/main/java/com/lunch/ops/backend/store/controller/StoreController.java`
- [Store Service](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/store/service/impl/DefaultStoreService.java): `backend/src/main/java/com/lunch/ops/backend/store/service/impl/DefaultStoreService.java`
- [Store Repository](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/store/repository/StoreRepository.java): `backend/src/main/java/com/lunch/ops/backend/store/repository/StoreRepository.java`
- [Store and Menu](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/store/entity/Store.java): `backend/src/main/java/com/lunch/ops/backend/store/entity/Store.java`

### Authentication

- [Auth Controller](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/user/controller/AuthController.java): `backend/src/main/java/com/lunch/ops/backend/user/controller/AuthController.java`
- [Auth Service](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/user/service/impl/DefaultAuthService.java): `backend/src/main/java/com/lunch/ops/backend/user/service/impl/DefaultAuthService.java`
- [User Details Lookup](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/security/CustomUserDetailsService.java): `backend/src/main/java/com/lunch/ops/backend/security/CustomUserDetailsService.java`
- [JWT Filter](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/security/JwtAuthenticationFilter.java): `backend/src/main/java/com/lunch/ops/backend/security/JwtAuthenticationFilter.java`
- [JSON Login Filter](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/security/JsonAuthenticationFilter.java): `backend/src/main/java/com/lunch/ops/backend/security/JsonAuthenticationFilter.java`
- [JWT Utilities](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/security/JwtUtils.java): `backend/src/main/java/com/lunch/ops/backend/security/JwtUtils.java`
- [Security Configuration](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/config/SecurityConfig.java): `backend/src/main/java/com/lunch/ops/backend/config/SecurityConfig.java`

### Other components

- **API Client**
- [Error Handling](https://github.com/hiandy98/lunch-order-system/blob/main/backend/src/main/java/com/lunch/ops/backend/common/exception/GlobalExceptionHandler.java): `backend/src/main/java/com/lunch/ops/backend/common/exception/GlobalExceptionHandler.java`

## Connections

- API Client → User Controller: sends account requests
- API Client → Auth Controller: requests logout
- API Client → Store Controller: sends store requests
- User Controller → Registration Service: registers users
- User Controller → User Service: manages accounts
- Registration Service → User Repository: checks and saves
- User Service → User Repository: reads and writes
- User Service → Auth Service: logs out on account changes
- User Details Lookup → User Repository: looks up users
- Auth Controller → Auth Service: logs out
- Auth Service → API Client: clears auth cookie
- Store Controller → Store Service: manages stores
- Store Service → Store Repository: reads and writes
- Store Service → Store and Menu: creates and updates
- User Controller → Error Handling: errors handled by
- Store Controller → Error Handling: errors handled by
