Inspiration
We noticed that university clubs and small startups often track expensive equipment (VR headsets, laptops, cameras) using messy spreadsheets. This leads to a situation where items are listed as available but are actually missing or broken. We wanted to build a closed-loop system that enforces accountability and real-time tracking.
What it does
TechLend is an internal inventory management system that manages the full lifecycle of hardware loans.
- Students can browse a real-time catalog and check out items.
- The System automatically prevents checking out out-of-stock items (server-side validation).
- Admins have a dedicated dashboard to view active loans and mark items as "Returned," which automatically restocks the inventory database.
How we built it
We used the MERN Stack (MongoDB, Express, React, Node.js) for a robust full-stack architecture.
- Frontend: Built with React and Vite. We implemented Redux Toolkit to manage the global "Loan Cart" state, ensuring the UI remains synced as users navigate between pages.
- Backend: We built a RESTful API with Node.js and Express.
- Database: MongoDB Atlas stores our asset and loan records. We used Mongoose for schema validation to ensure stock levels never drop below zero.
Challenges we ran into
The biggest challenge was handling race conditions and state synchronization. Initially, the frontend would display cached data, showing items as "Available" even after they were checked out. We solved this by implementing a "Cache Buster" timestamp on our API calls and adding strict server-side validation to reject any requests for items with 0 stock.
Accomplishments that we're proud of
We are proud of building a Closed-Loop System. It's not just a shopping cart; items actually come back. The logic for "Returning" an item and having it instantly reappear in the Catalog required precise coordination between the Client, Server, and Database.
What's next for TechLend
We plan to add user authentication (SSO) so we can track who exactly has the item, and email notifications to remind users when their loans are due!
Built With
- css3
- express.js
- javascript
- mongodb
- node.js
- react
- redux-toolkit
- vite