Book Library Management System: Full-Stack Coding Challenge
Objective: Build a complete library management system with backend API, frontend UI,
and a well-designed database. The system must support librarian authentication,
CRUD(Create, Read, Update and Delete) operations for books and members,
lending/fining workflows, and reporting.
Functional Requirements
1. Authentication
- Simple login for librarians (single role).
- Credentials:
o Username: `[email protected]`
o Password: `SecureLib@123` (store hashed with Bcrypt/Scrypt).
2. Member Management (CRUD)
- Fields: ID, Full Name, Email, Phone, Membership Date (auto-set), Status
(Active/Inactive).
- Constraints:
o Inactivate (soft-delete) members with active loans/unpaid fines.
o Prevent duplicate emails/phones.
3. Book Management (CRUD)
- Entities:
o Book Metadata: ISBN (unique), Title, Author, Publisher, Publication Year,
Genre.
o Book Copy: Copy ID (unique barcode), Status (`Available`, `Borrowed`,
`Lost`).
- Constraints:
o Delete metadata only if no copies exist.
o Track individual copies for lending history.
4. Lending & Fining
- Checkout:
o Assign a copy to a member.
o Auto-set due date (14 days from checkout).
- Return:
o Update copy status.
o Calculate fines: $1/day for overdue returns.
- Fines:
o Record fine amount, due date, payment status (`Paid`/`Unpaid`).
o Prevent book returns until fines are paid.
5. Reports
- Active Loans:
- Book title, member name, due date, overdue status (highlight if overdue).
- Member History:
- All transactions (checkout/return dates, fines) for a selected member.
Time Estimate: 6-8 hours
Submission: GitHub repo link with commit history.