A full-stack Library Management System designed to manage books, members, and lending workflows through a scalable Spring Boot REST API and React frontend.
This application demonstrates real-world backend architecture, API design, and frontend integration using modern technologies.
The Library Management System enables librarians and administrators to efficiently manage:
- Book inventory
- Library members
- Book lending and return workflows
The system follows a layered backend architecture and exposes RESTful APIs consumed by a React-based user interface.
This project highlights how modern applications integrate:
- Client-side UI (React)
- Backend REST APIs (Spring Boot REST API)
- Persistent relational databases (MySQL)
This project was created to practice full-stack development using React and Spring Boot.
It currently supports CRUD operations for:
- π Books
- π€ Members
- π Loans
The backend exposes REST endpoints which are consumed by the React frontend.
Interactive API documentation is also available through Swagger/OpenAPI.
β’ Building REST APIs using Spring Boot β’ Implementing CRUD operations with Spring Data JPA β’ Structuring a layered backend architecture (Controller β Service β Repository) β’ Using DTOs to decouple API contracts from JPA entities β’ Connecting a React frontend to backend APIs β’ Building controlled forms with dynamic dropdowns in React β’ Managing relational data using MySQL β’ Documenting APIs using Swagger/OpenAPI
- React
- Java
- Spring Boot
- Spring Data JPA
- REST APIs
- Swagger / OpenAPI
- MySQL
The system provides complete CRUD functionality for managing books.
Users can:
β’ Add new books to the library catalog
β’ View all books
β’ Update book information
β’ Delete books from the system
Library members can also be managed through the API.
Users can:
β’ Register new members β’ View all members β’ Update member information β’ Delete members
Books can be checked out to members and tracked through the system.
Users can:
β’ Create a loan by selecting a book and a member β’ View all active and past loans β’ Update loan details including return date β’ Delete a loan record
The backend includes Swagger/OpenAPI documentation.
After starting the backend server, open:
[http://localhost:8080/swagger-ui.html](http://localhost:8080/swagger-ui.html)
or
[http://localhost:8080/swagger-ui/index.html](http://localhost:8080/swagger-ui/index.html)
Swagger allows you to:
- View all API endpoints
- Test requests directly from the browser
- Inspect request and response models
The application is organized into three modules:
Contains JPA entities and persistence logic.
Spring Boot REST API exposing endpoints for books and members.
React frontend that communicates with the backend API.
git clone https://github.com/kayanr/LibraryManagementSystemApp.gitCreate the database:
CREATE DATABASE libraryms_db;Update database credentials in:
libraryms-app-rest/src/main/resources/application.properties
cd libraryms-app-rest
mvn spring-boot:runBackend runs at:
http://localhost:8080
cd libraryms-app-web
npm install
npm startFrontend runs at:
http://localhost:3000
Planned enhancements include:
β’ Upgrade to react-scripts v5 and React 18 (removes Node 17+ OpenSSL workaround)
β’ Replace welcome page with a live stats dashboard
β’ Group navigation into entity dropdowns (Books / Members / Loans)
β’ Highlight overdue loans in the loan list
β’ Add global error handling via @ControllerAdvice
β’ Add member authentication and user roles
β’ Implement search and pagination
β’ Upgrade to react-router-dom v6 and react-bootstrap v2
β’ Containerize the application using Docker
β’ Deploy the system to cloud infrastructure


