A full-stack, enterprise-grade Library Management System featuring modern UI, robust backend, automated CI/CD, and scalable infrastructure. Built for professional library operations and developer extensibility.
- Backend: Spring Boot (Java), JPA, Flyway, PostgreSQL
- Frontend: React, 21stDev, ShadCN, Radix, Framer Motion, Lucide
- Database: PostgreSQL
- CI/CD: Jenkins
- Containerization: Docker, Docker Compose
- Automation: Ansible
library-management-system/
├── backend/
├── frontend/
├── infra/
├── jenkins/
├── docs/
├── .github/
├── .env.example
├── README.md
└── LICENSE
- CRUD for Books, Users, Borrow Records
- Borrow/Return logic
- DTOs, mappers, global exception handler
- JPA + Flyway migrations
- JUnit tests
- PostgreSQL config via
application.yml
- Modern, beautiful UI (card grids, badges, animated forms)
- Sidebar + top navbar layout
- Custom theme tokens
- Reusable form/modal components
- API client (axios)
- Toast notifications
- Responsive, artistic, professional design
- Checkout → Build (Maven/Yarn) → Test → Dockerize → Push → Ansible Deploy
- See
jenkins/Jenkinsfile
- Setup: Docker, Compose, firewall, directories
- Deploy: Pull images, stop old containers, start new
- DB Backup: Daily cron, pg_dump, rotation
- Dev:
docker-compose -f infra/docker/docker-compose.dev.yml up - Prod:
docker-compose -f infra/docker/docker-compose.prod.yml up -d - Backend: Multi-stage build, optimized JDK
- Frontend: Multi-stage build, served via nginx
- Clone repo
- Setup
.envfrom.env.example - Start PostgreSQL
- Run backend:
mvn spring-boot:run - Run frontend:
yarn start - Access: Frontend
localhost:3000, Backendlocalhost:8080
- Configure hosts in
infra/ansible/inventory/hosts.ini - Run Ansible setup:
ansible-playbook infra/ansible/playbooks/setup.yml - Build & push Docker images
- Deploy:
ansible-playbook infra/ansible/playbooks/deploy.yml --extra-vars "env=prod" - DB backups:
ansible-playbook infra/ansible/playbooks/db-backup.yml
Follow these steps to set up, run, and test the Library Management System (DevOps_Project):
- Java 17+
- Node.js 18+ and Yarn
- PostgreSQL
- Docker & Docker Compose
- Maven
- Create PostgreSQL database and user:
psql -U postgres CREATE DATABASE library_db; CREATE USER library_user WITH PASSWORD 'library_pass'; GRANT ALL PRIVILEGES ON DATABASE library_db TO library_user;
- Update credentials in
.envandapplication.ymlif needed.
- Navigate to backend folder:
cd DevOps_Project/backend - Run Flyway migrations (if not automatic):
mvn flyway:migrate
- Build and run Spring Boot app:
mvn clean package mvn spring-boot:run
- Backend runs at
http://localhost:8080
- Navigate to frontend folder:
cd DevOps_Project/frontend - Install dependencies:
yarn install
- Start React app:
yarn start
- Frontend runs at
http://localhost:3000
- Navigate to infra/docker folder:
cd DevOps_Project/infra/docker - Start all services:
docker-compose -f docker-compose.dev.yml up --build
- Backend JUnit tests:
cd DevOps_Project/backend mvn test
- Frontend tests (if implemented):
cd DevOps_Project/frontend yarn test
- Ensure Jenkins is installed and configured.
- Point Jenkins to your project and use the provided
Jenkinsfile. - Trigger a build to verify pipeline stages.
- Update
infra/ansible/inventory/hosts.iniwith your server IPs. - Run setup playbook:
ansible-playbook infra/ansible/playbooks/setup.yml -i infra/ansible/inventory/hosts.ini
- Run deploy playbook:
ansible-playbook infra/ansible/playbooks/deploy.yml -i infra/ansible/inventory/hosts.ini
- Run DB backup playbook:
ansible-playbook infra/ansible/playbooks/db-backup.yml -i infra/ansible/inventory/hosts.ini
- Use Postman or curl to test endpoints:
GET /api/booksPOST /api/usersPOST /api/borrow
- Check logs for errors (backend logs, Docker logs, Jenkins console).
- Ensure all environment variables are set correctly.
- Verify database connectivity.
Your project is now ready for development, testing, and production deployment!
- Book List Page (card grid)
- Borrow/Return Form (animated)
- User List (badge cards)
- Global Layout (sidebar + navbar)
- Follow code style and folder structure
- Use TODOs for extensibility
- Submit PRs with clear descriptions
- Report issues via GitHub templates
MIT License. See LICENSE.
Professional, warm, and polished. For questions, open an issue or contact the maintainers.