A community-driven item-sharing platform that allows users to lend, borrow, and manage items with ease. Built with a full-stack architecture featuring React, Node.js, Express, and MongoDB, BorrowBuddy enables smooth item uploads, request handling, approval workflows, user dashboards, and secure authentication.
BorrowBuddy is a modern web app where users can:
- Upload items they want to lend
- Browse items uploaded by others
- Request to borrow an item
- Approve or reject requests for items they own
- Track their outgoing and incoming requests
- Manage their dashboard with clean UI and real-time updates
It aims to promote community sharing, sustainability, and resource efficiency.
- React (Vite)
- TailwindCSS
- Axios
- React Router DOM
- JWT-based protected routes
- Node.js
- Express.js
- Multer (image uploads)
- JWT authentication middleware
- MongoDB
- Mongoose Models (User, Item, Request)
- JWT-based login & registration
- Role-based access control
- Upload item images (Multer)
- Store title, description, owner, and availability
- View, filter, and sort
- Open detailed item pages
- Request to borrow
- Request → Approve / Reject → Returned
- Owner can approve or reject requests
- Borrower can track their request status
- Monitor incoming requests
- Track your active and past requests
git clone https://github.com/adwityac/borrowbuddy.git
cd borrowbuddycd backend
npm installcd frontend
npm installBackend:
npm run startFrontend:
npm run dev| Method | Endpoint | Description |
|---|---|---|
| POST | /items |
Upload an item |
| GET | /items |
Fetch all items |
| GET | /items/:id |
Fetch a single item |
| Method | Endpoint | Description |
|---|---|---|
| POST | /requests/:itemId |
Create borrow request |
| GET | /requests/mine |
My requests |
| GET | /requests/incoming |
Requests for my items |
| POST | /requests/:id/approve |
Approve |
| POST | /requests/:id/reject |
Reject |
| POST | /requests/:id/returned |
Mark returned |
BorrowBuddy is released under the MIT License.
Pull requests are welcome!
For major changes, open an issue first to discuss the update.