Advanced Library Management System
A professional, feature-rich desktop application for day-to-day library operations.
| 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 |
Add screenshots here by replacing the placeholder paths below.
| Login | Dashboard |
|---|---|
| (Add screenshot) | (Add screenshot) |
| Books Catalog | Circulation |
|---|---|
| (Add screenshot) | (Add screenshot) |
| Tool | Minimum Version | Download |
|---|---|---|
| Java JDK | 11 | Adoptium or Oracle |
| Git | Any | git-scm.com |
git clone https://github.com/adityatawde9699/LibraryPro.git
cd LibraryProWindows (PowerShell):
powershell -ExecutionPolicy Bypass -File download_libs.ps1Linux / macOS:
chmod +x build.sh
./build.sh depsWindows:
compile.batLinux / macOS:
./build.sh compileWindows:
run.batLinux / macOS:
./build.sh run| Username | Password | Role |
|---|---|---|
admin |
admin |
Administrator |
β οΈ Change the default password after your first login via the settings panel.
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
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 |
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,2Rules:
- First row must be the header row.
TitleandAuthorare required. All other columns are optional.- Column order does not matter.
- Duplicate ISBNs are automatically skipped (no overwriting existing records).
- Supported formats:
.csvand.xlsx
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;
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.
We welcome contributions! Please read CONTRIBUTING.md before submitting a pull request.
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name - Commit your changes:
git commit -m "feat: add your feature" - Push to your fork:
git push origin feature/your-feature-name - Open a Pull Request
Found a security vulnerability? Please read SECURITY.md before filing a public issue.
See CHANGELOG.md for a full version history.
This project is licensed under the MIT License β see LICENSE for details.
Made with β€οΈ by the LibraryPro contributors
