# umar-kamani/library_management_system architecture

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

## Overview

ALCHE Library Management System is a Swing desktop application for managing books, borrowing and returns, genres, locations, and users. The principal workflow is a staff member opening a management screen, performing an operation that is validated by a service, and persisting or retrieving library records through DAOs backed by MySQL. Borrowing has additional business rules for copy availability, user limits, due dates, and returns. The README documents the broader service/DAO layering; detailed wiring is sampled only for books and locations and in the borrowing service, so other links reflect documented architecture rather than inspected panel code.

Main entry points: [`src/main/java/mu/alche/library/App/MainWindow.java`](https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/App/MainWindow.java) (Main window), [`src/main/java/mu/alche/library/Database/DAO/Impl`](https://github.com/umar-kamani/library_management_system/tree/master/src/main/java/mu/alche/library/Database/DAO/Impl) (DAO implementations), [`src/main/java/mu/alche/library/App/Launcher.java`](https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/App/Launcher.java) (Launcher), [`src/main/java/mu/alche/library/UI/BooksPanel.java`](https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/UI/BooksPanel.java) (Books screen)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Desktop application"]
  node_launcher["Launcher<br/>[Launcher.java]"]
  node_window["Main window<br/>[MainWindow.java]"]
end

subgraph group_catalog["Catalog management"]
  node_books_ui["Books screen<br/>[BooksPanel.java]"]
  node_genres_ui["Genres screen<br/>[GenresPanel.java]"]
  node_book_service["Book service<br/>[BookService.java]"]
  node_genre_service["Genre service<br/>[GenreService.java]"]
end

subgraph group_circulation["Circulation"]
  node_borrow_ui["Borrowings screen"]
  node_borrow_service["Borrowing service"]
end

subgraph group_people["Users and locations"]
  node_users_ui["Users screen<br/>[UsersPanel.java]"]
  node_user_service["User service<br/>[UserService.java]"]
  node_locations_ui["Locations screen"]
  node_location_service["Location service"]
end

subgraph group_persistence["Data access"]
  node_entities["Library entities"]
  node_dao_impl["DAO implementations"]
  node_db_utils["DB utilities<br/>[DBUtils.java]"]
end

node_staff(("Library staff"))
node_mysql[("MySQL database")]

node_staff -->|"starts"| node_launcher
node_launcher -->|"opens"| node_window
node_staff -->|"uses"| node_window
node_window -->|"opens screen"| node_books_ui
node_window -->|"opens screen"| node_genres_ui
node_window -->|"opens screen"| node_borrow_ui
node_window -->|"opens screen"| node_users_ui
node_window -->|"opens screen"| node_locations_ui
node_books_ui -->|"calls"| node_book_service
node_genres_ui -.->|"uses"| node_genre_service
node_borrow_ui -.->|"uses"| node_borrow_service
node_users_ui -.->|"uses"| node_user_service
node_locations_ui -->|"calls"| node_location_service
node_book_service -->|"uses DAO"| node_dao_impl
node_genre_service -.->|"uses DAO"| node_dao_impl
node_borrow_service -->|"reads and writes"| node_dao_impl
node_user_service -->|"uses DAO"| node_dao_impl
node_location_service -->|"uses DAO"| node_dao_impl
node_dao_impl -->|"gets connections"| node_db_utils
node_db_utils -->|"connects and initializes"| node_mysql
node_dao_impl -->|"maps records"| node_entities

click node_launcher "https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/App/Launcher.java"
click node_window "https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/App/MainWindow.java"
click node_books_ui "https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/UI/BooksPanel.java"
click node_genres_ui "https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/UI/GenresPanel.java"
click node_book_service "https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/Service/BookService.java"
click node_genre_service "https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/Service/GenreService.java"
click node_borrow_ui "https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/UI/BorrowingsPanel.java"
click node_borrow_service "https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/Service/BorrowingService.java"
click node_users_ui "https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/UI/UsersPanel.java"
click node_user_service "https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/Service/UserService.java"
click node_locations_ui "https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/UI/LocationsPanel.java"
click node_location_service "https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/Service/LocationService.java"
click node_entities "https://github.com/umar-kamani/library_management_system/tree/master/src/main/java/mu/alche/library/Models"
click node_dao_impl "https://github.com/umar-kamani/library_management_system/tree/master/src/main/java/mu/alche/library/Database/DAO/Impl"
click node_db_utils "https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/Database/DBUtils.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_launcher,node_window toneBlue
class node_books_ui,node_genres_ui,node_book_service,node_genre_service,node_mysql toneAmber
class node_borrow_ui,node_borrow_service toneMint
class node_users_ui,node_user_service,node_locations_ui,node_location_service toneRose
class node_entities,node_dao_impl,node_db_utils,node_staff toneIndigo
```

## Components

### Desktop application

- [Launcher](https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/App/Launcher.java): `src/main/java/mu/alche/library/App/Launcher.java`
- [Main window](https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/App/MainWindow.java): `src/main/java/mu/alche/library/App/MainWindow.java`

### Catalog management

- [Books screen](https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/UI/BooksPanel.java): `src/main/java/mu/alche/library/UI/BooksPanel.java`
- [Genres screen](https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/UI/GenresPanel.java): `src/main/java/mu/alche/library/UI/GenresPanel.java`
- [Book service](https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/Service/BookService.java): `src/main/java/mu/alche/library/Service/BookService.java`
- [Genre service](https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/Service/GenreService.java): `src/main/java/mu/alche/library/Service/GenreService.java`

### Circulation

- [Borrowings screen](https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/UI/BorrowingsPanel.java): `src/main/java/mu/alche/library/UI/BorrowingsPanel.java`
- [Borrowing service](https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/Service/BorrowingService.java): `src/main/java/mu/alche/library/Service/BorrowingService.java`

### Users and locations

- [Users screen](https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/UI/UsersPanel.java): `src/main/java/mu/alche/library/UI/UsersPanel.java`
- [User service](https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/Service/UserService.java): `src/main/java/mu/alche/library/Service/UserService.java`
- [Locations screen](https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/UI/LocationsPanel.java): `src/main/java/mu/alche/library/UI/LocationsPanel.java`
- [Location service](https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/Service/LocationService.java): `src/main/java/mu/alche/library/Service/LocationService.java`

### Data access

- [Library entities](https://github.com/umar-kamani/library_management_system/tree/master/src/main/java/mu/alche/library/Models): `src/main/java/mu/alche/library/Models`
- [DAO implementations](https://github.com/umar-kamani/library_management_system/tree/master/src/main/java/mu/alche/library/Database/DAO/Impl): `src/main/java/mu/alche/library/Database/DAO/Impl`
- [DB utilities](https://github.com/umar-kamani/library_management_system/blob/master/src/main/java/mu/alche/library/Database/DBUtils.java): `src/main/java/mu/alche/library/Database/DBUtils.java`

### Other components

- **Library staff**
- **MySQL database**

## Connections

- Library staff → Launcher: starts
- Launcher → Main window: opens
- Library staff → Main window: uses
- Main window → Books screen: opens screen
- Main window → Genres screen: opens screen
- Main window → Borrowings screen: opens screen
- Main window → Users screen: opens screen
- Main window → Locations screen: opens screen
- Books screen → Book service: calls
- Genres screen → Genre service: uses
- Borrowings screen → Borrowing service: uses
- Users screen → User service: uses
- Locations screen → Location service: calls
- Book service → DAO implementations: uses DAO
- Genre service → DAO implementations: uses DAO
- Borrowing service → DAO implementations: reads and writes
- User service → DAO implementations: uses DAO
- Location service → DAO implementations: uses DAO
- DAO implementations → DB utilities: gets connections
- DB utilities → MySQL database: connects and initializes
- DAO implementations → Library entities: maps records
