A school-library circulation system built on Frappe v15.
Issue, return and renew books at a fast counter; bulk-catalogue stock with ISBN auto-lookup and QR labels; track every student's borrowing history; and run circulation & inventory reports.
Library Management turns a Frappe/ERPNext site into a multi-branch school library system. It is tightly integrated with the Student record (from the Education module), so a student's borrowed books appear right on their profile, and the librarian works from a single, scanner-friendly Library Counter.
- Fast circulation desk — fetch a student, scan books, and issue / return / reissue in batches.
- Multi-book transactions — one transaction can hold many copies.
- Reissue (renew) — extend a due date by the loan period without returning the book; renewals are counted.
- Borrowing history — full issue/return history on the counter and on the Student form.
- Bulk book intake — maintain books per branch/room/shelf with inline editing.
- ISBN auto-lookup — fetch title/author/publisher/pages from Google Books / Open Library, with an optional AI cover-extraction fallback.
- QR codes — generate per-book QR codes and print 3 labels per book.
- Inventory tracking — quantity / available / issued, per branch and shelf.
- 5 built-in reports — Book Issue Register, Overdue Books, Most Issued Books, Library Stock Summary, Unavailable Books.
| Library Counter | Add Library Books |
|---|---|
![]() |
![]() |
| Issue books | Reissue (renew) | Return books |
|---|---|---|
![]() |
![]() |
![]() |
| Issue / Return history | Reports menu | Bulk book intake |
|---|---|---|
![]() |
![]() |
![]() |
| ISBN metadata auto-fill | QR label printing |
|---|---|
![]() |
![]() |
Requirements: a Frappe Bench running Frappe v15, Python
≥ 3.10, and the Education app — it provides the
Student and School doctypes this app builds on, so install it first. The qrcode Python
package is installed automatically.
cd $PATH_TO_YOUR_BENCH
# 1) Education first — provides Student + School
bench get-app https://github.com/frappe/education
bench --site <your-site> install-app education
# 2) Then this app
bench get-app https://github.com/UnityAppSuite/unity_library --branch library-revamp
bench --site <your-site> install-app library_management
bench --site <your-site> migrate # syncs doctypes and registers the reportsThen open Library Counter (/app/library-counter) to start, and set your Loan Period in
Library Management Settings.
| Guide | For whom |
|---|---|
| User Guide | Librarians & admins — how to run the desk, intake, reports |
| Technical Reference | Developers — data model, API, hooks, migrations |
| Reports | Both — the five reports, filters and sources |
| Flows & Diagrams | Both — Mermaid diagrams of every flow + the data model |
Configure behaviour in Library Management Settings (a Single doctype): loan period, external metadata lookup, AI fallback (key/model), default take-home, and the branch-override role. See the User Guide → Settings.
This app uses pre-commit for formatting and linting. Please
install pre-commit and enable it:
cd apps/library_management
pre-commit installConfigured tools: ruff, eslint, prettier, pyupgrade. See the
Technical Reference → Developer setup for the dev
workflow (bench build, migrate, reload-doc).









