# canknotcawh/hk1_2627_int3505e_2_nhom6 architecture

> Architecture diagram of the GitHub repository canknotcawh/hk1_2627_int3505e_2_nhom6, 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/canknotcawh/hk1_2627_int3505e_2_nhom6
- Repository: https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6

## Overview

This is a library-management system with a public/member web app, an admin web app, and a Spring LMS API. The apparent user workflow is browsing books, borrowing and managing loans; administrators manage books, loans, and users. Sampled backend code confirms controller-to-service calls and loan-service repository access. The README provides no capability details, and most frontend pages and several service implementations were not sampled, so frontend-to-API links and unsampled service wiring are not asserted.

Main entry points: [`backend/src/lms/src/main/java/com/soa/gr6/lms/service/imple/LoanServiceImpl.java`](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/service/imple/LoanServiceImpl.java) (Loan service), [`backend/src/lms/src/main/java/com/soa/gr6/lms/service/identity/UserService.java`](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/service/identity/UserService.java) (Identity service), [`backend/src/lms/src/main/java/com/soa/gr6/lms/repository/UserRepository.java`](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/repository/UserRepository.java) (User repository), [`backend/src/lms/src/main/java/com/soa/gr6/lms/controller/identity/UserController.java`](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/controller/identity/UserController.java) (Member API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_member["Member web app"]
  node_main_app["Main app<br/>[App.tsx]"]
  node_member_pages["Member pages"]
  node_main_client["API client<br/>[api-client.ts]"]
end

subgraph group_admin["Admin web app"]
  node_admin_app["Admin app<br/>[App.tsx]"]
  node_admin_pages["Admin pages"]
end

subgraph group_api["LMS API"]
  node_public_books["Public book API"]
  node_user_api["Member API"]
  node_admin_book_api["Admin book API"]
  node_admin_loan_api["Admin loan API"]
  node_admin_user_api["Admin user API"]
end

subgraph group_core["Domain and persistence"]
  node_book_service["Book service<br/>[BookService.java]"]
  node_loan_service["Loan service"]
  node_user_service["Identity service<br/>[UserService.java]"]
  node_admin_user_service["Admin user service"]
  node_book_repo["Book repository"]
  node_loan_repo["Loan repository"]
  node_user_repo["User repository"]
  node_library_db[("Library data")]
end

node_reader(("Reader"))
node_admin_actor(("Administrator"))
node_jwt(("JWT issuer"))

node_reader -->|"uses"| node_main_app
node_main_app -->|"presents"| node_member_pages
node_admin_actor -->|"uses"| node_admin_app
node_admin_app -->|"presents"| node_admin_pages
node_public_books -->|"calls"| node_book_service
node_user_api -->|"calls"| node_user_service
node_user_api -->|"calls"| node_loan_service
node_admin_book_api -->|"calls"| node_book_service
node_admin_loan_api -->|"calls"| node_loan_service
node_admin_user_api -->|"calls"| node_admin_user_service
node_loan_service -->|"reads/writes"| node_loan_repo
node_loan_service -->|"reads/locks"| node_book_repo
node_loan_service -->|"reads"| node_user_repo
node_user_service -->|"reads/writes"| node_user_repo
node_book_repo -->|"persists"| node_library_db
node_loan_repo -->|"persists"| node_library_db
node_user_repo -->|"persists"| node_library_db
node_jwt -.->|"provides claims"| node_user_service

click node_main_app "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/frontend/main-web/src/App.tsx"
click node_member_pages "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/tree/main/frontend/main-web/src/pages"
click node_main_client "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/frontend/main-web/src/lib/api-client.ts"
click node_admin_app "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/frontend/admin-web/src/App.tsx"
click node_admin_pages "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/tree/main/frontend/admin-web/src/pages"
click node_public_books "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/controller/PublicController/PublicBookController.java"
click node_user_api "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/controller/identity/UserController.java"
click node_admin_book_api "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/controller/admin/AdminBookController.java"
click node_admin_loan_api "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/controller/admin/AdminLoanController.java"
click node_admin_user_api "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/controller/admin/AdminUserController.java"
click node_book_service "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/service/BookService.java"
click node_loan_service "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/service/imple/LoanServiceImpl.java"
click node_user_service "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/service/identity/UserService.java"
click node_admin_user_service "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/service/AdminUserService.java"
click node_book_repo "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/repository/BookRepository.java"
click node_loan_repo "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/repository/LoanRepository.java"
click node_user_repo "https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/repository/UserRepository.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_main_app,node_member_pages,node_main_client toneBlue
class node_admin_app,node_admin_pages toneAmber
class node_public_books,node_user_api,node_admin_book_api,node_admin_loan_api,node_admin_user_api toneMint
class node_book_service,node_loan_service,node_user_service,node_admin_user_service,node_book_repo,node_loan_repo,node_user_repo,node_library_db toneRose
class node_reader,node_admin_actor,node_jwt toneIndigo
```

## Components

### Member web app

- [Main app](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/frontend/main-web/src/App.tsx): `frontend/main-web/src/App.tsx`
- [Member pages](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/tree/main/frontend/main-web/src/pages): `frontend/main-web/src/pages`
- [API client](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/frontend/main-web/src/lib/api-client.ts): `frontend/main-web/src/lib/api-client.ts`

### Admin web app

- [Admin app](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/frontend/admin-web/src/App.tsx): `frontend/admin-web/src/App.tsx`
- [Admin pages](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/tree/main/frontend/admin-web/src/pages): `frontend/admin-web/src/pages`

### LMS API

- [Public book API](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/controller/PublicController/PublicBookController.java): `backend/src/lms/src/main/java/com/soa/gr6/lms/controller/PublicController/PublicBookController.java`
- [Member API](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/controller/identity/UserController.java): `backend/src/lms/src/main/java/com/soa/gr6/lms/controller/identity/UserController.java`
- [Admin book API](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/controller/admin/AdminBookController.java): `backend/src/lms/src/main/java/com/soa/gr6/lms/controller/admin/AdminBookController.java`
- [Admin loan API](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/controller/admin/AdminLoanController.java): `backend/src/lms/src/main/java/com/soa/gr6/lms/controller/admin/AdminLoanController.java`
- [Admin user API](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/controller/admin/AdminUserController.java): `backend/src/lms/src/main/java/com/soa/gr6/lms/controller/admin/AdminUserController.java`

### Domain and persistence

- [Book service](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/service/BookService.java): `backend/src/lms/src/main/java/com/soa/gr6/lms/service/BookService.java`
- [Loan service](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/service/imple/LoanServiceImpl.java): `backend/src/lms/src/main/java/com/soa/gr6/lms/service/imple/LoanServiceImpl.java`
- [Identity service](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/service/identity/UserService.java): `backend/src/lms/src/main/java/com/soa/gr6/lms/service/identity/UserService.java`
- [Admin user service](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/service/AdminUserService.java): `backend/src/lms/src/main/java/com/soa/gr6/lms/service/AdminUserService.java`
- [Book repository](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/repository/BookRepository.java): `backend/src/lms/src/main/java/com/soa/gr6/lms/repository/BookRepository.java`
- [Loan repository](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/repository/LoanRepository.java): `backend/src/lms/src/main/java/com/soa/gr6/lms/repository/LoanRepository.java`
- [User repository](https://github.com/canknotcawh/hk1_2627_int3505e_2_nhom6/blob/main/backend/src/lms/src/main/java/com/soa/gr6/lms/repository/UserRepository.java): `backend/src/lms/src/main/java/com/soa/gr6/lms/repository/UserRepository.java`
- **Library data**

### Other components

- **Reader**
- **Administrator**
- **JWT issuer**

## Connections

- Reader → Main app: uses
- Main app → Member pages: presents
- Administrator → Admin app: uses
- Admin app → Admin pages: presents
- Public book API → Book service: calls
- Member API → Identity service: calls
- Member API → Loan service: calls
- Admin book API → Book service: calls
- Admin loan API → Loan service: calls
- Admin user API → Admin user service: calls
- Loan service → Loan repository: reads/writes
- Loan service → Book repository: reads/locks
- Loan service → User repository: reads
- Identity service → User repository: reads/writes
- Book repository → Library data: persists
- Loan repository → Library data: persists
- User repository → Library data: persists
- JWT issuer → Identity service: provides claims
