# stewiegriffin00/librarymanagement architecture

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

## Overview

This repository is a Spring-based library-management application. Its domain is organized around books, members, loans, and reservations, with authentication and library settings as supporting capabilities. The likely user workflow is to authenticate and then use the corresponding API endpoints to manage library activity. The tree identifies controllers, repositories, entities, and security components, but no README or source excerpts were provided; therefore, runtime call and data-flow relationships cannot be verified and are not drawn.

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API endpoints"]
  node_books_api["Books API"]
  node_loans_api["Loans API"]
  node_members_api["Members API"]
  node_reservations_api["Reservations API"]
  node_auth_api["Authentication API"]
  node_settings_api["Settings API"]
  node_secure_endpoint["Secure endpoint"]
end

subgraph group_domain["Library domain"]
  node_book["Book<br/>[Book.java]"]
  node_loan["Loan<br/>[Loan.java]"]
  node_member["Member<br/>[Member.java]"]
  node_reservation["Reservation<br/>[Reservation.java]"]
  node_library_settings["Library settings"]
  node_shelfspace_user["ShelfSpace user"]
end

subgraph group_persistence["Persistence"]
  node_book_repository["Book repository"]
  node_loan_repository["Loan repository"]
  node_member_repository["Member repository"]
  node_reservation_repository["Reservation repository"]
  node_settings_repository["Settings repository"]
  node_user_repository["User repository"]
end

subgraph group_security["Security"]
  node_auth_config["Security configuration"]
  node_jwt_filter["JWT filter<br/>[JwtAuthFilter.java]"]
  node_jwt_util["JWT utilities<br/>[JwtUtil.java]"]
  node_user_details["User details service"]
end

subgraph group_runtime["Application runtime"]
  node_redis_config["Redis configuration<br/>[RedisConfig.java]"]
  node_application["Application entry"]
end

node_user(("Library user"))

click node_books_api "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/controller/BookController.java"
click node_loans_api "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/controller/LoanController.java"
click node_members_api "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/controller/MemberController.java"
click node_reservations_api "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/controller/ReservationController.java"
click node_auth_api "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/controller/AuthController.java"
click node_settings_api "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/controller/SettingsController.java"
click node_secure_endpoint "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/controller/SecureEndpoint.java"
click node_book "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/entity/Book.java"
click node_loan "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/entity/Loan.java"
click node_member "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/entity/Member.java"
click node_reservation "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/entity/Reservation.java"
click node_library_settings "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/entity/LibrarySettings.java"
click node_shelfspace_user "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/entity/ShelfSpaceUser.java"
click node_book_repository "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/repository/BookRepository.java"
click node_loan_repository "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/repository/LoanRepository.java"
click node_member_repository "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/repository/MemberRepository.java"
click node_reservation_repository "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/repository/ReservationRepository.java"
click node_settings_repository "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/repository/LibrarySettingsRepository.java"
click node_user_repository "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/repository/UserRepository.java"
click node_auth_config "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/config/SecurityConfig.java"
click node_jwt_filter "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/security/JwtAuthFilter.java"
click node_jwt_util "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/security/JwtUtil.java"
click node_user_details "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/security/CustomUserDetailsService.java"
click node_redis_config "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/config/RedisConfig.java"
click node_application "https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/LibraryManagementApplication.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_books_api,node_loans_api,node_members_api,node_reservations_api,node_auth_api,node_settings_api,node_secure_endpoint,node_user toneBlue
class node_book,node_loan,node_member,node_reservation,node_library_settings,node_shelfspace_user toneAmber
class node_book_repository,node_loan_repository,node_member_repository,node_reservation_repository,node_settings_repository,node_user_repository toneMint
class node_auth_config,node_jwt_filter,node_jwt_util,node_user_details toneRose
class node_redis_config,node_application toneIndigo
```

## Components

### API endpoints

- [Books API](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/controller/BookController.java): `src/main/java/com/example/libraryManagement/controller/BookController.java`
- [Loans API](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/controller/LoanController.java): `src/main/java/com/example/libraryManagement/controller/LoanController.java`
- [Members API](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/controller/MemberController.java): `src/main/java/com/example/libraryManagement/controller/MemberController.java`
- [Reservations API](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/controller/ReservationController.java): `src/main/java/com/example/libraryManagement/controller/ReservationController.java`
- [Authentication API](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/controller/AuthController.java): `src/main/java/com/example/libraryManagement/controller/AuthController.java`
- [Settings API](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/controller/SettingsController.java): `src/main/java/com/example/libraryManagement/controller/SettingsController.java`
- [Secure endpoint](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/controller/SecureEndpoint.java): `src/main/java/com/example/libraryManagement/controller/SecureEndpoint.java`

### Library domain

- [Book](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/entity/Book.java): `src/main/java/com/example/libraryManagement/entity/Book.java`
- [Loan](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/entity/Loan.java): `src/main/java/com/example/libraryManagement/entity/Loan.java`
- [Member](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/entity/Member.java): `src/main/java/com/example/libraryManagement/entity/Member.java`
- [Reservation](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/entity/Reservation.java): `src/main/java/com/example/libraryManagement/entity/Reservation.java`
- [Library settings](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/entity/LibrarySettings.java): `src/main/java/com/example/libraryManagement/entity/LibrarySettings.java`
- [ShelfSpace user](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/entity/ShelfSpaceUser.java): `src/main/java/com/example/libraryManagement/entity/ShelfSpaceUser.java`

### Persistence

- [Book repository](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/repository/BookRepository.java): `src/main/java/com/example/libraryManagement/repository/BookRepository.java`
- [Loan repository](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/repository/LoanRepository.java): `src/main/java/com/example/libraryManagement/repository/LoanRepository.java`
- [Member repository](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/repository/MemberRepository.java): `src/main/java/com/example/libraryManagement/repository/MemberRepository.java`
- [Reservation repository](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/repository/ReservationRepository.java): `src/main/java/com/example/libraryManagement/repository/ReservationRepository.java`
- [Settings repository](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/repository/LibrarySettingsRepository.java): `src/main/java/com/example/libraryManagement/repository/LibrarySettingsRepository.java`
- [User repository](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/repository/UserRepository.java): `src/main/java/com/example/libraryManagement/repository/UserRepository.java`

### Security

- [Security configuration](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/config/SecurityConfig.java): `src/main/java/com/example/libraryManagement/config/SecurityConfig.java`
- [JWT filter](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/security/JwtAuthFilter.java): `src/main/java/com/example/libraryManagement/security/JwtAuthFilter.java`
- [JWT utilities](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/security/JwtUtil.java): `src/main/java/com/example/libraryManagement/security/JwtUtil.java`
- [User details service](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/security/CustomUserDetailsService.java): `src/main/java/com/example/libraryManagement/security/CustomUserDetailsService.java`

### Application runtime

- [Redis configuration](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/config/RedisConfig.java): `src/main/java/com/example/libraryManagement/config/RedisConfig.java`
- [Application entry](https://github.com/stewiegriffin00/librarymanagement/blob/master/src/main/java/com/example/libraryManagement/LibraryManagementApplication.java): `src/main/java/com/example/libraryManagement/LibraryManagementApplication.java`

### Other components

- **Library user**
