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