A Java-based client-server library system with cloud hosting and a JavaFX GUI
- Overview
- Features
- Tech Stack
- Prerequisites
- Project Structure
- Setup & Running
- Usage
- Contact & Acknowledgments
- License
A distributed client-server application built to showcase object-oriented programming skills. Library members can:
- Browse a catalog
- Borrow and return items
- Leave reviews
All data is stored in Azure Cosmos DB (MongoDB API) and served via an Azure Container Instance. The client uses a JavaFX GUI with search, filtering, and audio feedback.
Required
- Catalog Browsing: Titles, authors, genres, availability
- Borrow/Return:
BORROW <id>/RETURN <id> - Secure Login: Username/password authentication
Additional
- 🔒 Password Encryption
- 🗄️ MongoDB (Azure Cosmos DB)
- ☁️ Cloud Server on Azure ACI
- ⚙️ Maven build & dependency management
- 🔊 Sound Effects for UI actions
- 🔍 Search by title or author
- 🏷️ Tagging & Filtering by genre
- 💬 Review System with TextArea feedback
- Language: Java 8
- Build: Maven 3.8.1
- Database: Azure Cosmos DB (MongoDB API)
- GUI: JavaFX 17
- Cloud: Azure Container Instances
- Java 8 (JDK)
- Maven 3.8.1
- MongoDB: An Azure Cosmos DB instance (or local MongoDB).
- Tip: Replace the hard-coded connection strings in
AccountManager.java,Catalog.java, andClientHandler.javawith your own.
- Tip: Replace the hard-coded connection strings in
Distributed-Library-Management-System/
├── ServerSide/
│ ├── pom.xml
│ └── src/main/java/com/nirmaydas/serverside/
│ ├── Server.java
│ ├── ClientHandler.java
│ ├── AccountManager.java
│ ├── Catalog.java
│ ├── PasswordEncrypter.java
│ └── …
└── ClientSide/
├── pom.xml
└── src/main/java/com/nirmaydas/clientside/
├── Client.java
├── Controller.java
├── Command.java
└── Response.java
└── src/main/resources/com/nirmaydas/clientside/
├── *.fxml
└── sounds/*.wav|*.mp3
- Cloud (Azure ACI)
- Verify with:
az container show --resource-group myResourceGroup --name library-server
- Verify with:
- Local
cd ServerSide # update MongoDB URI in the Java classes mvn exec:java@run-server
cd ClientSide
# if local server: edit Controller.java → "localhost:5000"
mvn clean package
mvn exec:java@run-client- Create Account or Login with:
- Username:
newuser - Password:
newpass
- Username:
- Browse catalog items
- Borrow/Return via commands
- Reviews: click “Reviews” and submit
- Feedback displayed in a TextArea
- Made by:: Nirmay Das
- Email: nirmaydas99@gmail.com
- Utilizes JavaFX, GSON, MongoDB Java Driver, Azure ACI
For educational purposes only. Not licensed for public distribution.