A modern, cloud-native library management system built with Spring Boot and microservices architecture. This system provides a comprehensive solution for managing library operations including book lending, customer management, and librarian workflows.
- API Gateway - Single entry point for all client requests
- Library Service - Manages books, authors, and library resources (MySQL)
- Customer Service - Handles customer information and accounts (PostgreSQL)
- Loan Service - Manages book loans and returns (MongoDB)
- Library Worker Service - Handles librarian operations and staff management
- MySQL: Library and worker data
- PostgreSQL: Customer information
- MongoDB: Loan and transaction records
- Java 17 or higher
- Docker and Docker Compose
- Maven
- MySQL, PostgreSQL, and MongoDB (or use Docker containers)
docker-compose up --build- Start required databases
- Build each service:
cd <service-directory> ./mvnw clean package
- Run each service with the appropriate profile
SPRING_PROFILES_ACTIVE: Set todockerfor containerized deployment- Database connection strings
- Service discovery and API gateway configurations
# Run tests for all services
./mvnw test
# Run tests for a specific service
cd <service-directory>
./mvnw testJaCoCo is configured for code coverage reporting. Reports are generated in:
<service-directory>/target/site/jacoco/
# Build all services
docker-compose build
# Build a specific service
docker-compose build <service-name>Kubernetes deployment manifests are available in the k8s/ directory.
API documentation is available through Swagger UI when services are running:
- API Gateway:
http://localhost:8080/swagger-ui.html - Individual services:
http://<service-host>:<port>/swagger-ui.html
This project is licensed under the MIT License - see the LICENSE file for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request