A Node.js-powered Library Management System for handling book reservations, borrowing, returning, and generating admin reports and logs.
- Borrow Books: Users can borrow books if available.
- Return Books: Users can return borrowed books.
- View Borrowed Books: Check the list of books currently borrowed by a user.
- Reserve Books: Users can reserve books if unavailable.
- Cancel Reservations: Users can cancel their reservations.
- View Reservations: View active reservations per user.
- Reports:
- Currently borrowed books
- Overdue books with details of overdue period
- Logs:
- System activity logs for tracking user and admin actions
- Logs include actions like borrowing, returning, and reservation management
-
Clone the repository
git clone https://github.com/your-username/library-management-system.git cd library-management-system
-
Install dependencies
npm install
-
Setup MongoDB
- Ensure MongoDB is running locally or update the connection string in the code:
mongoose.connect('mongodb://localhost/library');
- Ensure MongoDB is running locally or update the connection string in the code:
-
Run the server
npm start:dev
The server will run at http://localhost:4000.
- Borrow a Book:
POST /borrow/:bookId
- Return a Book:
POST /return/:bookId
- List Borrowed Books:
GET /users/:id/borrowed-books
- Reserve a Book:
POST /reservations
- Cancel Reservation:
DELETE /reservations/:reservationId
- List Reservations:
- All reservations:
GET /reservations
- User-specific:
GET /users/:id/reservations
- All reservations:
- Currently Borrowed Books:
GET /reports/borrowed-books
- Overdue Books:
GET /reports/overdue-books
- View Logs:
GET /logs
- Create Log Entry:
POST /logs
{
name: String,
borrowedBooks: [ObjectId],
reservations: [ObjectId]
}
{
title: String,
author: String,
isAvailable: Boolean,
borrowHistory: [
{
user: ObjectId,
borrowedAt: Date,
returnedAt: Date
}
]
}
{
action: String,
details: String,
performedAt: Date
}