A library management system designed for university use, allowing students to browse, filter, and rent books through a terminal-based interface.
BORK is a simplified library management system with:
- Backend: Spring Boot REST API with Hibernate ORM
- Frontend: Go-based Terminal User Interface (TUI)
- Database: PostgreSQL
- Architecture: Three-tier (Presentation, Business, Data layers)
- 📖 Browse and filter books by title, author, or category
- 🛒 Shopping cart-style rental system
- 📋 Rental management (max 3 books, 30-day period)
⚠️ Overdue notifications- 🔐 User authentication
- 📊 Import books and users via CSV/JSON
┌─────────────────┐
│ Go TUI │ ← Terminal User Interface
│ (Frontend) │
└────────┬────────┘
│ HTTP/REST
▼
┌─────────────────┐
│ Spring Boot │ ← Business Logic & REST API
│ (Backend) │
└────────┬────────┘
│ JDBC/Hibernate
▼
┌─────────────────┐
│ PostgreSQL │ ← Data Persistence
│ (Database) │
└─────────────────┘
- Docker & Docker Compose
- Java 25 (local dev)
- Go 1.26.3 (local dev)
- Maven 3.9+ (backend builds)
# 1. Start database
make dev-db
# 2. Start backend (new terminal)
make dev-backend
# 3. Start frontend TUI (new terminal)
make dev-frontendLogin: student1 / Test123!
make docker-build
make docker-up
docker attach bork-frontendSwagger UI: http://localhost:8080/swagger-ui.html
Test endpoints, view schemas, and authenticate directly in the browser.
iss/
├── backend/ # Spring Boot REST API
│ ├── src/
│ │ ├── main/java/com/bork/
│ │ │ ├── BorkApplication.java
│ │ │ ├── controller/
│ │ │ ├── service/
│ │ │ ├── repository/
│ │ │ └── model/
│ │ └── resources/
│ │ └── application.yml
│ ├── pom.xml
│ └── Dockerfile
├── frontend/ # Go TUI Application
│ ├── cmd/bork-tui/
│ ├── internal/ui/
│ ├── go.mod
│ └── Dockerfile
├── database/ # Database initialization
│ └── init/
├── docs/ # Documentation
│ ├── specification.md
│ ├── class_diagram.md
│ ├── usecase_diagram.md
│ └── ...
├── docker-compose.yml # Full stack
├── docker-compose.dev.yml # DB only
├── Makefile # Build & run commands
└── README.md
See Development Guide for detailed instructions on:
- Make targets and commands
- Backend/Frontend development
- Testing and Docker usage
- Configuration and environment variables
- API testing with curl
See Documentation Index for complete documentation.
Quick Links:
- Quick Start Guide - Get running in under 5 minutes
- Development Guide - Setup, testing, Docker, configuration
- Build & Deployment Guide - Production-optimized Docker builds
- API Guide - REST API reference with curl examples
- Design & Architecture - Requirements, UML diagrams, UI prototypes
See Lab Assignments for a complete timeline of deliverables.
- Pull Requests: All contributions must be made via pull requests
- Commit Format: Follow Conventional Commits specification
- Signed Commits: All commits must be signed with GPG/SSH keys
- Pre-commit Hooks: Run pre-commit hooks before submitting (
pre-commit run --all-files) - Squash Commits: Squash all commits into a single commit before merging
- Stay Updated: Keep your branch up to date with the main branch
This project is licensed under the MIT License - see the LICENSE file for details.
- University project for Software Systems Engineering course
- Built with Spring Boot, Go, PostgreSQL, and Docker