A RESTful API for managing books and borrow operations in a digital library system.
| Technology | Description | Docs |
|---|---|---|
| Node.js | JavaScript runtime for building server-side apps | https://nodejs.org/en/docs |
| Express.js | Web framework for Node.js | https://expressjs.com/ |
| TypeScript | Strongly typed JavaScript | https://www.typescriptlang.org/docs/ |
| Mongoose | MongoDB ODM for data modeling | https://mongoosejs.com/docs/ |
| MongoDB | NoSQL database | https://www.mongodb.com/docs |
| Zod | Schema validation for request data | https://zod.dev/ |
| ts-node-dev | Live reloading TypeScript development server | https://www.npmjs.com/package/ts-node-dev |
| dotenv | Load environment variables | https://www.npmjs.com/package/dotenv |
- Clone repo
- Run
npm install - Setup
.envwith DB user and password - Run
npm run devto start the server
- POST
/api/book/ - Body:
{
"title": "1984",
"author": "George Orwell",
"genre": "FICTION",
"isbn": "9780451524935",
"copies": 5
}- GET
/api/book?filter=&sortBy=&sort=&limit=
- POST
/api/borrow - Body:
{
"book": "bookObjectId",
"quantity": 2,
"dueDate": "2025-07-18T00:00:00.000Z"
}- GET
/api/borrow
- DELETE
/api/book/:bookId
- 400 for validation errors
- 404 if book not found
- 500 for server errors
- Borrowing deducts copies, disables availability if 0 copies left