A full-stack, enterprise-grade Library Management System built with Spring Boot 3 (Java 25) on the backend and React + Vite + Tailwind CSS on the frontend. Features complete book catalog management, real-time circulation tracking (borrowing, returns, renewals, reservations), automated fine calculation in Indian Rupee (₹), JWT-based role authorization, and downloadable PDF/CSV reports.
- Full CRUD operations for Books, Authors, and Categories.
- Search and filter catalog by title, author, category, ISBN, or availability.
- Track physical copies, barcodes, publication details, and book condition.
- Member Self-Borrowing: Library members can directly check out available books.
- Librarian Desk: Issue and process book returns with barcode tracking.
- Renewals & Holds: Members can renew active loans or place hold reservations.
- Automatic Stock Updates: Real-time management of total and available book copies.
- Automatic Fine Calculation: Accrues overdue fines per day (in Indian Rupee - ₹).
- Payment & Waiver: Process fine payments or record librarian waivers.
- Fine Audit Log: Detailed records of fine status (
PENDING,PAID,WAIVED).
- Role-Based Access Control (RBAC):
ROLE_ADMIN: System-wide access, user management, catalog management, fine management, reports.ROLE_LIBRARIAN: Catalog desk, issue/return management, fine processing/waivers, reports.ROLE_MEMBER: Browse catalog, borrow books, view active loans, reservations, pay fines.
- Stateless Authentication: Secured via JWT (JSON Web Tokens) and BCrypt password hashing.
- Visual dashboard statistics (total books, active loans, pending fines, top borrowed titles).
- PDF export for catalog inventory and active loans.
- CSV export for overdue fines and circulation records.
- Framework: Java 25 / Spring Boot 3.3.5
- Security: Spring Security, JWT (JJWT)
- Database: H2 In-Memory Database (Spring Data JPA / Hibernate)
- Reporting: Apache Commons CSV, OpenPDF (iText)
- Build Tool: Maven
- Framework: React 18 (Vite 8)
- Styling: Tailwind CSS (Glassmorphism design system)
- Icons: Lucide React
- HTTP Client: Axios
- Java Development Kit (JDK 17+) installed.
- Node.js (v18+) and
npminstalled.
- Open terminal in the
backend/directory:cd backend - Run the application:
# On Windows (PowerShell/CMD): .\mvnw.cmd spring-boot:run # On Linux/macOS: ./mvnw spring-boot:run
- The backend server will start at
http://localhost:8081.- H2 Console:
http://localhost:8081/h2-console - JDBC URL:
jdbc:h2:mem:librarydb(User:SA, Password: empty)
- H2 Console:
- Open terminal in the
frontend/directory:cd frontend - Install dependencies:
npm install
- Start the development server:
npm run dev
- Access the web app at
http://localhost:3000/.
| Role | Password | |
|---|---|---|
| System Administrator | admin@library.com |
admin123 |
| Librarian | librarian@library.com |
librarian123 |
| Library Member | member@library.com |
member123 |
| Library Member 2 | alice@library.com |
member123 |
Library-Management-System/
├── backend/
│ ├── src/main/java/com/library/backend/
│ │ ├── config/ # Security, JWT & CORS configuration
│ │ ├── controller/ # REST API Controllers (Auth, Book, Circulation, Fine, Report)
│ │ ├── dto/ # Request & Response Data Transfer Objects
│ │ ├── entity/ # JPA Entities (User, Book, Transaction, Fine, etc.)
│ │ ├── repository/ # Spring Data Repositories
│ │ ├── service/ # Business Logic Services
│ │ └── util/ # DataSeeder & Utilities
│ └── pom.xml
├── frontend/
│ ├── src/
│ │ ├── components/ # UI Layout & Modal components
│ │ ├── pages/ # Application views (Catalog, Fines, MyLoans, Dashboard, etc.)
│ │ ├── services/ # Axios API Client & Services
│ │ └── App.jsx
│ ├── index.html
│ ├── vite.config.js
│ └── package.json
└── README.md
This project is open source under the MIT License.