The Library module provides a complete solution for managing school library operations. It covers the full lifecycle from cataloging books, tracking physical copies, handling rentals, and managing reservations to monitoring circulation and enforcing library policies.
Navigation path
Operations → Library (segment: operations/library)
| Sub-section | Path | Description |
|---|
| Dashboard | operations/library | Overview and quick actions |
| Books | operations/library/books | Book catalog management |
| Copies | operations/library/copies | Physical copy tracking |
| Rentals | operations/library/rentals | Checkout/return management |
| Reservations | operations/library/reservations | Hold requests |
Library architecture
┌─────────────────────────────────────────────────────────────────────────┐
│ Library Management System │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Book Catalog │ │
│ │ │ │
│ │ Title • Authors • ISBN • Category • Access Level │ │
│ │ │ │
│ └────────────────────────────────┬──────────────────────────────────┘ │
│ │ │
│ ┌────────────┴────────────┐ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────────────────┐ ┌──────────────────────────────────┐ │
│ │ Physical Copies │ │ Reservations │ │
│ │ │ │ │ │
│ │ Barcode • RFID • Status │ │ Queue • Priority • Pickup │ │
│ │ Condition • Location │ │ Notifications • Expiry │ │
│ │ │ │ │ │
│ └────────────┬─────────────┘ └──────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Rentals │ │
│ │ │ │
│ │ Checkout → Due Date → Renewals → Return → Fee Settlement │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Dashboard & Analytics │ │
│ │ │ │
│ │ Circulation Rate • Overdue Alerts • Popular Books • Activity │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Part 1: Dashboard
The library dashboard provides an at-a-glance view of library operations.
Dashboard metrics
| Metric | Description |
|---|
| Total Books | Unique titles in catalog |
| Total Copies | Physical items |
| Available Copies | Ready for checkout |
| Active Rentals | Currently checked out |
| Overdue Rentals | Past due date |
| Pending Reservations | Waiting in queue |
| Ready for Pickup | Reserved books available |
| Circulation Rate | % of copies in circulation |
Copies by status breakdown
| Status | Description |
|---|
available | Ready for checkout |
checked_out | Currently borrowed |
reserved | Held for reservation |
repair | Being repaired |
lost | Reported lost |
damaged | Damaged condition |
Quick actions
| Action | Description |
|---|
| New Checkout | Open checkout dialog |
| Add Book | Add to catalog |
| Search Catalog | Find books |
| View Overdue | See overdue list |
Recent activity feed
Activity types tracked:
| Type | Description |
|---|
checkout | Book checked out |
return | Book returned |
reservation | New reservation |
overdue | Rental became overdue |
new_book | Book added to catalog |
- Stat Cards — Key metrics with trends
- Quick Actions — Common tasks
- Overdue Alerts — Items needing attention
- Recent Activity — Live transaction feed
- Popular Books — Most borrowed titles
Part 2: Books (Catalog)
The book catalog manages bibliographic records for all library materials.
Book properties
| Field | Type | Description |
|---|
id | string | Unique identifier |
schoolId | string | School association |
title | string | Book title |
subtitle | string | Optional subtitle |
isbn | string | ISBN-10 |
isbn13 | string | ISBN-13 |
authors | array | Author names |
editors | array | Editor names |
illustrators | array | Illustrator names |
publisher | string | Publisher name |
publicationDate | string | Publication date |
edition | string | Edition info |
language | string | Language code |
category | enum | Book category |
deweyDecimal | string | Dewey classification |
subjectArea | string | Subject area |
gradeLevel | string | Target grade |
pages | number | Page count |
format | enum | Physical format |
dimensions | string | Size dimensions |
totalCopies | number | Total physical copies |
availableCopies | number | Available now |
checkedOutCopies | number | Currently borrowed |
damagedCopies | number | Damaged count |
lostCopies | number | Lost count |
shelfLocation | string | Default location |
section | string | Library section |
isAvailableForRental | boolean | Can be borrowed |
rentalDurationDays | number | Default loan period |
lateFeePerDay | number | Overdue fee |
replacementCost | number | Replacement value |
accessLevel | enum | Who can borrow |
restricted | boolean | Has restrictions |
restrictionReason | string | Why restricted |
hasEbookVersion | boolean | E-book available |
ebookUrl | string | E-book link |
coverImageUrl | string | Cover image |
description | string | Book description |
summary | string | Short summary |
acquisitionDate | string | When acquired |
acquisitionCost | number | Purchase cost |
donor | string | Donor name |
timesBorrowed | number | Borrow count |
averageRating | number | User rating |
reviewsCount | number | Review count |
isActive | boolean | Active in catalog |
status | enum | Book status |
tags | array | Classification tags |
Book categories
| Category | Description |
|---|
textbook | Course textbooks |
reference | Reference materials |
fiction | Fiction books |
non_fiction | Non-fiction books |
periodical | Magazines, journals |
| Format | Description |
|---|
hardcover | Hardcover binding |
paperback | Paperback binding |
ebook | Electronic format |
Book statuses
| Status | Description |
|---|
available | Available in catalog |
processing | Being cataloged |
repair | Under repair |
lost | All copies lost |
withdrawn | Removed from circulation |
Access levels
| Level | Description |
|---|
all_students | Available to all students |
specific_grades | Restricted to certain grades |
teachers_only | Staff only |
Adding a book
- Navigate to Library → Books
- Click Add Book
- Fill required fields:
- Title (required)
- Authors (at least one required)
- Category (required)
- Format (required)
- Language (required)
- Access level (required)
- Optional: Add ISBN for auto-fill
- Configure rental settings:
- Rental duration (days)
- Late fee per day
- Replacement cost
- Upload cover image
- Save book
Google Books integration
Search Google Books to auto-populate:
- Click Search Google Books
- Enter title or ISBN
- Select from results
- Review and adjust auto-filled data
- Save book
Book detail view
| Tab | Content |
|---|
| Overview | Title, authors, description, cover |
| Copies | List of physical copies |
| Rentals | Active and past rentals |
| Reservations | Current hold requests |
| Statistics | Borrow history, ratings |
Filtering books
| Filter | Options |
|---|
| Category | Textbook, reference, fiction, etc. |
| Format | Hardcover, paperback, ebook |
| Status | Available, processing, etc. |
| Access level | All students, specific grades, etc. |
| Available only | Hide books with no copies |
| Subject area | Subject filter |
| Grade level | Grade filter |
| Language | Language filter |
Part 3: Copies (Physical Items)
Copies represent individual physical items that can be checked out.
Copy properties
| Field | Type | Description |
|---|
id | string | Unique identifier |
bookId | string | Parent book reference |
schoolId | string | School association |
barcode | string | Barcode identifier |
rfidTag | string | RFID tag identifier |
copyNumber | number | Copy sequence number |
status | enum | Current status |
condition | enum | Physical condition |
shelfLocation | string | Current location |
section | string | Library section |
acquisitionDate | string | When acquired |
acquisitionSource | string | Source/vendor |
acquisitionCost | number | Purchase cost |
notes | string | Staff notes |
Copy statuses
| Status | Description | Available |
|---|
available | Ready for checkout | ✓ |
checked_out | Currently borrowed | – |
reserved | Held for reservation | – |
repair | Being repaired | – |
lost | Reported lost | – |
withdrawn | Removed from circulation | – |
Copy conditions
| Condition | Description |
|---|
excellent | Like new |
good | Minor wear |
fair | Visible wear |
poor | Heavy wear |
Adding copies
Single copy:
- Navigate to Library → Copies or Book Detail → Copies
- Click Add Copy
- Select or confirm book
- Enter identifiers:
- Barcode (required)
- RFID tag (optional)
- Copy number (auto-assigned)
- Set initial status and condition
- Set location
- Save copy
Bulk add copies:
- Click Add Multiple Copies
- Select book
- Enter quantity
- System generates barcodes
- Confirm and save
Copy management actions
| Action | Description |
|---|
| View | See copy details |
| Edit | Update copy info |
| Change status | Update availability |
| Change condition | Update physical state |
| Checkout | Start new rental |
| Delete | Remove copy |
Batch operations
Perform actions on multiple copies:
| Operation | Description |
|---|
| Update status | Change status in bulk |
| Update condition | Change condition in bulk |
| Update location | Move copies |
| Delete | Remove multiple copies |
Copy table columns
| Column | Description |
|---|
| Barcode | Copy identifier |
| Book | Parent book title |
| Status | Current status badge |
| Condition | Physical condition |
| Location | Shelf location |
| Last activity | Most recent action |
Part 4: Rentals (Checkouts)
Rentals track the borrowing lifecycle from checkout to return.
Rental properties
| Field | Type | Description |
|---|
id | string | Rental identifier |
bookId | string | Book reference |
copyId | string | Copy reference |
studentId | string | Student borrower |
teacherId | string | Teacher borrower |
schoolId | string | School association |
checkoutDate | datetime | When checked out |
dueDate | datetime | When due back |
returnDate | datetime | When returned |
renewalCount | number | Times renewed |
maxRenewals | number | Max allowed renewals |
lastRenewalDate | datetime | Last renewal |
status | enum | Rental status |
isOverdue | boolean | Past due date |
daysOverdue | number | Days past due |
conditionAtCheckout | enum | Condition when borrowed |
conditionAtReturn | enum | Condition when returned |
damageReported | boolean | Damage flagged |
damageDescription | string | Damage details |
lateFeeCharged | number | Late fee amount |
damageFeeCharged | number | Damage fee amount |
totalFee | number | Total fees owed |
feePaid | boolean | Fees settled |
feePaidDate | datetime | When paid |
reminderSentCount | number | Reminders sent |
checkedOutBy | string | Staff who processed |
returnedTo | string | Staff who received |
notes | string | Additional notes |
Rental statuses
| Status | Description |
|---|
active | Currently checked out |
returned | Returned successfully |
overdue | Past due date |
lost | Reported lost |
damaged | Returned damaged |
Checkout flow
Select Book/Copy
│
▼
Select Borrower (Student or Teacher)
│
▼
Record Condition
│
▼
Confirm Due Date
│
▼
Process Checkout
│
▼
┌─────────────────┐
│ Active Rental │
└────────┬────────┘
│
┌────┴────┐
│ │
On time Overdue
│ │
▼ ▼
Return Reminders
│ │
└────┬────┘
│
▼
Check Condition
│
┌────┴────┐
│ │
OK Damaged
│ │
▼ ▼
Complete Assess fee
│
▼
Complete
Creating a checkout
- Navigate to Library → Rentals
- Click New Checkout
- Search and select book
- Select available copy (or auto-select)
- Search and select borrower:
- Student tab — Select student
- Teacher tab — Select teacher
- Record condition at checkout
- Confirm due date (auto-calculated)
- Add notes (optional)
- Click Checkout
Processing a return
- Find rental in list or search
- Click rental row or Return action
- Select condition at return
- If damaged:
- Check "Report damage"
- Enter damage description
- System calculates damage fee
- If overdue:
- System calculates late fee
- Review total fees
- Click Process Return
- Collect payment if fees owed
Renewing a rental
- Find active rental
- Click Renew
- Confirm new due date
- Add notes (optional)
- Save renewal
Renewal limits:
- Default max renewals: 2
- Cannot renew if reserved by others
- Cannot renew overdue items
Marking as lost
- Find rental
- Click Mark Lost
- System marks copy as lost
- System calculates replacement fee
- Confirm lost status
Fee management
| Fee type | Calculation |
|---|
| Late fee | Days overdue × Late fee per day |
| Damage fee | Assessed by staff |
| Lost/Replacement | Book replacement cost |
Recording fee payment
- Find rental with fees
- Click Record Payment
- Enter amount paid
- Select payment method
- Add notes
- Confirm payment
Rental filters
| Filter | Options |
|---|
| Status | Active, returned, overdue, lost, damaged |
| Overdue only | Show only overdue |
| Fee status | Paid, unpaid |
| Borrower type | Student, teacher |
| Date range | Checkout date range |
Rental table columns
| Column | Description |
|---|
| Book | Book title |
| Borrower | Student/teacher name |
| Checkout date | When borrowed |
| Due date | When due |
| Status | Current status |
| Days overdue | If past due |
| Fees | Outstanding amount |
Part 5: Reservations (Holds)
Reservations allow users to request books that are currently unavailable.
Reservation properties
| Field | Type | Description |
|---|
id | string | Reservation ID |
bookId | string | Requested book |
bookCopyId | string | Specific copy (optional) |
studentId | string | Student requester |
teacherId | string | Teacher requester |
schoolId | string | School association |
status | enum | Reservation status |
priority | number | Queue priority |
queuePosition | number | Position in queue |
requestedAt | datetime | When requested |
holdExpiresAt | datetime | Hold expiry |
pickupLocation | string | Pickup location |
pickupByDate | datetime | Pickup deadline |
fulfilledAt | datetime | When fulfilled |
canceledAt | datetime | When canceled |
cancellationReason | string | Why canceled |
noShowCount | number | Missed pickups |
notificationsSent | number | Notifications sent |
notes | string | Staff notes |
isActive | boolean | Active reservation |
Reservation statuses
| Status | Description |
|---|
active | Waiting in queue |
fulfilled | Book picked up |
cancelled | User or staff canceled |
expired | Hold period expired |
no_show | User didn't pick up |
Reservation flow
Student/Teacher requests book
│
▼
┌─────────────────┐
│ Active │ ← Position in queue
└────────┬────────┘
│
Copy becomes available
│
▼
┌─────────────────┐
│ Ready for │ ← Notification sent
│ Pickup │
└────────┬────────┘
│
┌────┴────┐
│ │
Picked up Not picked up
│ │
▼ ▼
Fulfilled No Show / Expired
Creating a reservation
- Navigate to Library → Reservations
- Click New Reservation
- Search and select book
- Search and select requester
- Set pickup location (optional)
- Set priority (optional)
- Add notes (optional)
- Save reservation
Reservation from book detail
- View book details
- Click Reserve
- Select requester
- Confirm reservation
Fulfilling a reservation
When copy becomes available:
- System notifies requester
- Copy status changes to "reserved"
- Staff finds reservation in list
- Staff holds copy at pickup location
- When requester arrives:
- Click Fulfill
- Proceed to checkout
- Reservation marked fulfilled
Canceling a reservation
- Find reservation
- Click Cancel
- Enter cancellation reason
- Confirm cancellation
No-show handling
If requester doesn't pick up by deadline:
- System marks as "no_show"
- Copy returns to available
- Next in queue is notified
- No-show count incremented
Queue position
Reservations are fulfilled in order:
- Priority (if set)
- Request date (first come, first served)
Notification types
| Event | Notification |
|---|
| Book available | "Your reserved book is ready" |
| Pickup reminder | "Please pick up your book by..." |
| Expiry warning | "Your hold expires soon" |
| Queue update | "Your position in queue is now..." |
Reservation filters
| Filter | Options |
|---|
| Status | Active, fulfilled, cancelled, etc. |
| Book | Specific book |
| Requester | Student or teacher |
| Ready for pickup | Available now |
Batch operations
The library supports bulk operations for efficiency.
Available batch operations
| Operation | Description | Applies to |
|---|
| Update status | Change item status | Copies |
| Update condition | Change condition | Copies |
| Update location | Move items | Copies |
| Delete | Remove items | Copies, books |
| Checkout | Bulk checkout | Copies |
| Return | Bulk return | Rentals |
| Add tags | Tag items | Books |
Using batch operations
- Select items using checkboxes
- Selection count appears in toolbar
- Click Batch Actions
- Choose operation
- Configure parameters
- Review confirmation
- Execute operation
- View results summary
Batch operation results
| Result | Description |
|---|
| Success | Item processed |
| Failed | Error occurred |
| Skipped | Not applicable |
Permissions required
| Action | Required permission |
|---|
| View dashboard | library.view |
| View books | library.books.view or library.view |
| Add book | library.books.create or library.create |
| Edit book | library.books.update or library.update |
| Delete book | library.books.delete or library.delete |
| View copies | library.copies.view or library.view |
| Add copy | library.copies.create or library.create |
| Edit copy | library.copies.update or library.update |
| Delete copy | library.copies.delete or library.delete |
| View rentals | library.rentals.view or library.view |
| Checkout | library.rentals.create or library.create |
| Return | library.rentals.update or library.update |
| View reservations | library.reservations.view or library.view |
| Create reservation | library.reservations.create or library.create |
| Cancel reservation | library.reservations.update or library.update |
Best practices
Cataloging
Copy management
Circulation
Reservations
Troubleshooting
Cannot checkout book
Causes:
- No available copies
- Borrower at loan limit
- Book restricted for borrower grade
- Borrower has unpaid fees
Fix:
- Check copy availability
- Check borrower's active rentals
- Verify access level
- Check fee status
Copy status not updating
Causes:
- Concurrent update
- Permission issue
- Validation error
Fix:
- Refresh the page
- Verify permissions
- Check validation messages
Reservation not fulfilled
Causes:
- Copy still checked out
- Copy in repair/lost
- Higher priority reservation
Fix:
- Check copy status
- Review reservation queue
- Contact current borrower if overdue
Fees not calculating
Causes:
- Fee settings not configured
- Book missing fee amounts
Fix:
- Check book rental settings
- Configure late fee per day
- Configure replacement cost