Borrowly-LMS is a comprehensive Library Management System built with Spring Boot, designed to digitize and automate library operations. It provides a full platform for managing books, user subscriptions, book loans, payments, penalties, reservations, reviews, and bookmarks with modern, scalable architecture.
Note
This project is currently UNDER DEVELOPMENT. Additional features will be added, existing functionalities will be enhanced, and FRONT-END DEVELOPMENT IS PLANNED.
- Organized and simple design for easy reference
- Key tables: Users, Books, Categories, Subscriptions, BookLoans, Penalties, Payments, Reservations, BookReviews, Bookmarks
- Organize and catalog books by categories
- Manage book inventory and availability
- Track book details and metadata
- Secure registration and login using JWT
- Role-based access control
- User profile management
- Password reset via email
- Flexible subscription plans
- Subscription lifecycle tracking (renewal, cancellation)
- Renewal and cancellation management
- Borrow and return books with automated tracking
- Borrow and due date configuration
- Renewal support (default max: 2 times)
- Track overdue books and overdue days
- Support multiple loan states (BORROWED, OVERDUE, RETURNED)
- Reserve books with queue position tracking
- Multiple reservation states (PENDING, AVAILABLE, FULFILLED, CANCELLED, EXPIRED)
- Automatic availability notifications
- Time-bound reservation windows
- Support for expiration handling
- Notes and comments on reservations
- User-submitted book reviews with star ratings (1-5)
- Review titles and detailed descriptions
- Track review creation and updates
- User-specific reviews per book
- Support for aggregated ratings and reviews
- Create personal bookmarks for favorite books
- Add notes to bookmarked books
- Personal reading list organization
- Track when books were bookmarked
- Automatic penalty generation for overdue or damaged books
- Multiple penalty types: Delay, Damage
- Track penalty states: UNPAID, PARTIALLY_PAID, PAID, CANCELLED
- Partial payment support
- Cancel penalties with reasons and audit trail
- Payment integration for penalty settlement
- Stripe payment gateway for secure transactions
- Support for subscription and penalty payments
- Track payment status: Initiated, Completed, Failed
- Payment provider management and transaction tracking
- Comprehensive payment history and audit trail
- JPA Specifications-based complex queries
- Filter by multiple criteria (state, type, user, dates)
- Paginated results for efficient retrieval
- Advanced book search and filtering
- JWT-based authentication
- Secure password management
- Role-based access control
- Email integration for notifications (payment confirmations, password resets, reservation updates)
- Thymeleaf templates for formatted emails
- Framework: Spring Boot 4.0.4
- Database: PostgreSQL with JPA/Hibernate
- Authentication: JWT
- DTO Mapping: MapStruct
- Payment Gateway: Stripe
- Email: Spring Mail + Thymeleaf
- Code Quality: Lombok
- API Documentation: SpringDoc OpenAPI
- Language: Java 17
- Modular Design: Separate modules for each domain (auth, book, loans, payment, penalty, subscription, user, reservation, reviews, bookmark)
- Service Layer: Encapsulates business logic
- Repository Pattern: Data access with JPA repositories
- DTO Pattern: Separate entity and API models
- Exception Handling: Custom exception handling for business logic errors
- Shared Utilities: Common functionality in
_sharedmodule (DTOs, configs, email, audit trails)