Skip to content

NirmayDas/Distributed-Library-Management-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 

Repository files navigation

📚 Distributed Library Management System

A Java-based client-server library system with cloud hosting and a JavaFX GUI

Demo Video Of the Project

Java
Maven
MongoDB
JavaFX
Azure ACI


📖 Table of Contents

  1. Overview
  2. Features
  3. Tech Stack
  4. Prerequisites
  5. Project Structure
  6. Setup & Running
  7. Usage
  8. Contact & Acknowledgments
  9. License

🔍 Overview

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.


✨ Features

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

🛠️ Tech Stack

  • Language: Java 8
  • Build: Maven 3.8.1
  • Database: Azure Cosmos DB (MongoDB API)
  • GUI: JavaFX 17
  • Cloud: Azure Container Instances

⚙️ Prerequisites

  • 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, and ClientHandler.java with your own.

📁 Project Structure

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

🚀 Setup & Running

Server

  1. Cloud (Azure ACI)
    • Verify with:
      az container show        --resource-group myResourceGroup        --name library-server
  2. Local
    cd ServerSide
    # update MongoDB URI in the Java classes
    mvn exec:java@run-server

Client

cd ClientSide
# if local server: edit Controller.java → "localhost:5000"
mvn clean package
mvn exec:java@run-client

🎮 Usage

  1. Create Account or Login with:
    • Username: newuser
    • Password: newpass
  2. Browse catalog items
  3. Borrow/Return via commands
  4. Reviews: click “Reviews” and submit
  5. Feedback displayed in a TextArea

📬 Contact & Acknowledgments

  • Made by:: Nirmay Das
  • Email: nirmaydas99@gmail.com
  • Utilizes JavaFX, GSON, MongoDB Java Driver, Azure ACI

📄 License

For educational purposes only. Not licensed for public distribution.

About

A Distributed Library Management System, made as the final project for my Object-Oriented Programming class

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages