Skip to content

adityatawde9699/LibraryPro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

LibraryPro Banner

πŸ“š LibraryPro

Advanced Library Management System

Build Status Java SQLite FlatLaf License: MIT Platform

A professional, feature-rich desktop application for day-to-day library operations.


✨ Features

Feature Description
πŸ” Authentication Database-backed login with role support (admin / librarian)
πŸ“Š Live Dashboard Real-time stats β€” total books, active members, issued books, overdue count
πŸ“š Catalog Management Add, edit, delete books with full-text search across title, author, ISBN, category
πŸ‘₯ Member Management Register members with auto-generated IDs (LIB0001…), edit, search, deactivate
πŸ”„ Circulation Issue & return books with a 14-day loan window and β‚Ή1/day overdue fine calculation
πŸ“‹ Transaction History Complete audit log with color-coded status: Returned / Active / Overdue
πŸ“‚ Bulk Import Import book records from CSV or Excel (.xlsx) with preview and duplicate skipping
πŸŒ™ Modern UI FlatLaf dark theme with the Catppuccin Mocha color palette
πŸ’Ύ Persistent Storage Local SQLite database (library.db) β€” no server setup required

πŸ–₯️ Screenshots

Add screenshots here by replacing the placeholder paths below.

Login Dashboard
(Add screenshot) (Add screenshot)
Books Catalog Circulation
(Add screenshot) (Add screenshot)

πŸš€ Quick Start

Prerequisites

Tool Minimum Version Download
Java JDK 11 Adoptium or Oracle
Git Any git-scm.com

1. Clone the repository

git clone https://github.com/adityatawde9699/LibraryPro.git
cd LibraryPro

2. Download dependencies

Windows (PowerShell):

powershell -ExecutionPolicy Bypass -File download_libs.ps1

Linux / macOS:

chmod +x build.sh
./build.sh deps

3. Compile

Windows:

compile.bat

Linux / macOS:

./build.sh compile

4. Run

Windows:

run.bat

Linux / macOS:

./build.sh run

Default credentials

Username Password Role
admin admin Administrator

⚠️ Change the default password after your first login via the settings panel.


πŸ“ Project Structure

LibraryPro/
β”œβ”€β”€ .github/
β”‚   β”œβ”€β”€ workflows/
β”‚   β”‚   └── ci.yml              # GitHub Actions CI/CD pipeline
β”‚   β”œβ”€β”€ ISSUE_TEMPLATE/
β”‚   β”‚   β”œβ”€β”€ bug_report.md
β”‚   β”‚   └── feature_request.md
β”‚   └── PULL_REQUEST_TEMPLATE.md
β”‚
β”œβ”€β”€ models/                     # Plain data models (POJO)
β”‚   β”œβ”€β”€ Book.java
β”‚   β”œβ”€β”€ Member.java
β”‚   β”œβ”€β”€ Transaction.java
β”‚   └── User.java
β”‚
β”œβ”€β”€ database/                   # Data Access Objects + schema bootstrap
β”‚   β”œβ”€β”€ DatabaseHelper.java     # Schema creation & DB connection
β”‚   β”œβ”€β”€ BookDAO.java
β”‚   β”œβ”€β”€ MemberDAO.java
β”‚   β”œβ”€β”€ TransactionDAO.java
β”‚   └── UserDAO.java
β”‚
β”œβ”€β”€ ui/                         # Swing views and dialogs
β”‚   β”œβ”€β”€ UIUtils.java            # Shared styling constants (color palette, fonts)
β”‚   β”œβ”€β”€ LoginView.java
β”‚   β”œβ”€β”€ MainDashboard.java
β”‚   β”œβ”€β”€ DashboardPanel.java
β”‚   β”œβ”€β”€ BooksPanel.java
β”‚   β”œβ”€β”€ BookFormDialog.java
β”‚   β”œβ”€β”€ MembersPanel.java
β”‚   β”œβ”€β”€ MemberFormDialog.java
β”‚   β”œβ”€β”€ CirculationPanel.java
β”‚   β”œβ”€β”€ HistoryPanel.java
β”‚   └── ImportBooksDialog.java  # CSV + Excel bulk import
β”‚
β”œβ”€β”€ LibraryApp.java             # Application entry point
β”‚
β”œβ”€β”€ compile.bat                 # Windows build script
β”œβ”€β”€ run.bat                     # Windows launch script
β”œβ”€β”€ download_libs.ps1           # Windows dependency downloader
β”œβ”€β”€ build.sh                    # Linux/macOS build + run script
β”‚
β”œβ”€β”€ .gitignore
β”œβ”€β”€ CHANGELOG.md
β”œβ”€β”€ CONTRIBUTING.md
β”œβ”€β”€ LICENSE
β”œβ”€β”€ SECURITY.md
└── README.md

πŸ“¦ Dependencies

All dependencies are fetched from Maven Central by download_libs.ps1 / build.sh. They live in lib/ which is git-ignored β€” no bloated repository.

Library Version Purpose
SQLite JDBC 3.45.3.0 Local database engine
FlatLaf 3.4.1 Modern dark look-and-feel
SLF4J API 2.0.12 Logging facade (required by SQLite JDBC)
SLF4J Simple 2.0.12 Lightweight logging backend
Apache POI 5.3.0 Excel .xlsx file import
Apache POI OOXML 5.3.0 Excel Open XML support
XMLBeans 5.2.1 POI dependency
Commons Compress 1.26.1 POI dependency
Commons Collections 4 4.4 POI dependency
Commons Codec 1.16.1 POI dependency
Log4j API 2.23.1 POI dependency
Commons IO 2.15.1 POI dependency
CurvesAPI 1.08 POI dependency
SparseBitSet 1.3 POI dependency

πŸ“„ CSV Import Format

For bulk-importing books, prepare a .csv file with the following structure:

Title,Author,ISBN,Category,Year,Quantity
The Great Gatsby,F. Scott Fitzgerald,9780743273565,Fiction,1925,3
Clean Code,Robert C. Martin,9780132350884,Technology,2008,2

Rules:

  • First row must be the header row.
  • Title and Author are required. All other columns are optional.
  • Column order does not matter.
  • Duplicate ISBNs are automatically skipped (no overwriting existing records).
  • Supported formats: .csv and .xlsx

πŸ—οΈ Architecture

The project follows a clean, layered MVC (Model-View-Controller) architecture.

graph TD
    %% Node Definitions
    UI["πŸ’» UI Layer (View)<br/><font size=2>javax.swing + FlatLaf</font>"]
    DAO["πŸ—„οΈ Data Access Layer (Controller)<br/><font size=2>JDBC + DAO Pattern</font>"]
    DB[("πŸ’Ύ Database<br/><font size=2>library.db (SQLite)</font>")]
    Model["πŸ“¦ Models (POJO)<br/><font size=2>Book, Member, User...</font>"]

    %% Relationships
    UI -->|invokes| DAO
    DAO -->|reads/writes| DB
    DAO -.->|populates| Model
    Model -.->|displayed by| UI

    %% Styling
    classDef ui fill:#89b4fa,stroke:#313244,stroke-width:2px,color:#11111b;
    classDef dao fill:#a6e3a1,stroke:#313244,stroke-width:2px,color:#11111b;
    classDef db fill:#f38ba8,stroke:#313244,stroke-width:2px,color:#11111b;
    classDef model fill:#fab387,stroke:#313244,stroke-width:2px,color:#11111b;

    class UI ui;
    class DAO dao;
    class DB db;
    class Model model;
Loading

Note: No external framework controller is used. Each Swing panel acts as its own controller, keeping the codebase approachable for contributors familiar only with standard Java SE.


🀝 Contributing

We welcome contributions! Please read CONTRIBUTING.md before submitting a pull request.

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/your-feature-name
  3. Commit your changes: git commit -m "feat: add your feature"
  4. Push to your fork: git push origin feature/your-feature-name
  5. Open a Pull Request

πŸ”’ Security

Found a security vulnerability? Please read SECURITY.md before filing a public issue.


πŸ“ Changelog

See CHANGELOG.md for a full version history.


πŸ“œ License

This project is licensed under the MIT License β€” see LICENSE for details.


Made with ❀️ by the LibraryPro contributors

About

A professional, feature-rich Java Swing library management system featuring a modern FlatLaf dark UI, SQLite persistence, and robust bulk-import capabilities for CSV and Excel files.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors