TAM Inventory System
Warehouse stock down to the serial number: goods in from a CSV, goods out with a printable invoice, and staff requests approved item by item.
Network equipment is expensive and individually identified, so knowing you have twelve of a router isn't enough; you need to know which twelve. TAM's warehouse was tracked in spreadsheets that couldn't say which serial went to which site.
This system tracks stock by brand, product and item, and for serialised items by individual serial number, through every movement: entries into the warehouse, consumption out to a destination, and requests from staff.
Every movement, recorded
Entries
Goods arrive with a CSV of item codes, serial numbers and quantities, parsed with PapaParse and checked into stock in one go.
Consumption
Goods leave against a number and a destination, with the serials that left, and a PDF invoice rendered with react-pdf.
Requests
Staff request items; each line is approved or rejected on its own, and staff follow their own requests.
Catalogue
Brands and products with images, items marked serialised or not, and live quantities.
Serial numbers as first-class data
Every serial number is its own record with a status, linked to the entry that brought it in and the consumption that took it out. That makes the question "where did this unit go?" a lookup, not an investigation. Tables export to Excel, and the whole system was built in about seven weeks, from data model to finished app.
Built with
- Next.js
- TypeScript
- Prisma
- NextAuth
- PapaParse
- react-pdf
- xlsx
- TanStack Table
- Recharts
- shadcn/ui
Related Work
