AssetFlow is a centralized ERP platform to digitize how organizations track, allocate, and manage their physical assets and shared resources — built for a hackathon in an 8-hour build window.
Live Demo: (https://ai-assetflow-manager.vercel.app) Backend API: https://ai-assetflow-manager.onrender.com
Admin
Email: admin@assetflow.com
Password: admin123
Employee — sign up any new account via the Signup page (auto-assigned Employee role).
- Frontend: React, TypeScript, Vite, Tailwind CSS, Lucide Icons
- Backend: Node.js, Express
- Database: MongoDB (Mongoose)
- Auth: JWT-based authentication with role-based access control
- Deployment: Vercel (frontend), Render (backend), MongoDB Atlas (database)
- Signup creates an Employee account only — no self-elevation
- JWT-based login with role-based route protection
- Roles:
Employee,Department Head,Asset Manager,Admin
- Register assets with auto-generated Asset Tag (
AF-0001,AF-0002, ...) - Search and filter by name, tag, serial number, category, status, location
- Lifecycle status tracking:
Available,Allocated,Reserved,Under Maintenance,Lost,Retired,Disposed
- Asset Manager/Admin allocates assets to employees
- Conflict detection: attempting to allocate an already-held asset is blocked, showing who currently holds it
- Return flow resets asset status back to
Available
- Time-slot based booking for shared/bookable resources
- Overlap detection: conflicting time-slot requests are automatically rejected
- Booking cancellation supported
- Any user can raise a maintenance request for an asset (describing the issue and setting priority)
- Asset Manager/Admin can Approve or Reject requests
- On approval, asset status auto-updates to
Under Maintenance - Asset Manager/Admin marks requests as Resolved, which reverts the asset back to
Available
- Real-time KPI cards: Assets Available, Assets Allocated, Under Maintenance, Active Allocations
- Overdue returns and upcoming returns surfaced separately
Given the 8-hour build constraint, the following were consciously deprioritized:
- Employee promotion UI (Admin → Department Head / Asset Manager) — role field exists in schema, promotion endpoint not yet built
- Audit cycles and discrepancy reports
- Reports & Analytics (utilization trends, heatmaps)
- Real-time notifications (Socket.io) — currently polling-based via page refresh
- Organization Setup UI (Departments/Categories are seeded directly via script rather than an admin UI)
- Employee-initiated transfer/return requests (currently Asset Manager marks returns directly)
- Restricting maintenance requests to only assets currently held by the requester (currently any logged-in user can raise a request for any asset)
These are the natural next steps for a v2 iteration.
backend/
├── config/db.js
├── models/ # User, Department, AssetCategory, Asset, Allocation, Booking, Maintenance
├── routes/ # auth, asset, allocation, booking, category, user, dashboard, maintenance
├── middleware/ # JWT auth + role-based guards
├── seed/seed.js # Seeds Admin user, departments, categories
└── server.js
client/
├── src/
│ ├── api/axios.ts
│ ├── context/AuthContext.tsx
│ ├── components/ # Navbar, ProtectedRoute
│ ├── pages/ # Login, Signup, Dashboard, Assets, Allocations, Bookings, Maintenance
│ └── types/
| Action | Employee | Department Head | Asset Manager | Admin |
|---|---|---|---|---|
| Signup / Login | ✅ | ✅ | ✅ | ✅ |
| View assets | ✅ | ✅ | ✅ | ✅ |
| Register asset | ❌ | ❌ | ✅ | ✅ |
| Allocate asset | ❌ | ❌ | ✅ | ✅ |
| Book shared resource | ✅ | ✅ | ✅ | ✅ |
| Raise maintenance request | ✅ | ✅ | ✅ | ✅ |
| Approve/Reject/Resolve maintenance | ❌ | ❌ | ✅ | ✅ |
| View Employee Directory | ❌ | ❌ | ✅ | ✅ |
Backend
cd backend
npm install
npm run dev # requires MONGO_URI and JWT_SECRET in .env
npm run seed # seeds Admin user, departments, categories (run once)Frontend
cd client
npm install
npm run devNavneet Patel GitHub: @patelscripts