Custom internal software
Inventory & stock request system
An internal tool that gives a 10-person team one audited system for stock, requests and approvals.
- Client
- Internal tool for a 10-person team
- Where
- Private deployment
- When
- 2026
- Status
- Deployed (private)
How a request moves
- 01
Raise request
- 02
Review
- 03
Approve
- 04
Hand over
- 05
Stock updated
Each step is logged with who did it and when.
What needed fixing.
A 10-person team needed to know what stock it had in each location, who had asked for which items, and who had signed them off.
That meant one reliable place for stock across locations, a clear request process with approvals, and an honest record of every change, kept private and secure.
How I went about it.
- 01
Model the real process
Mapped how requests actually move through the team, then built the workflow around those steps instead of a generic template.
- 02
Security in the database
Every rule is enforced by the database itself, not only hidden in the interface, so a crafted request cannot get around it.
- 03
Never overwrite stock
Stock is a ledger of movements, so every number can be traced back to who changed it and when.
- 04
Testable offline
A full offline copy runs on one machine with demo data, so changes are tested without touching real records.
The system.
Stock across locations
Items, categories and locations with live totals, built from an append-only ledger of stock movements.
Low-stock alerts
Items below their threshold are flagged, based on the total across all locations.
Request workflow
Raise a request, have it reviewed, approved or rejected, then handed over, with the status visible to the person who asked.
Role-based access
Each person sees and does only what their role allows, with approval steps before stock leaves the store.
Two-factor sign-in
Authenticator-app codes are required for everyone. Accounts are created by invitation only.
Full audit log
Every change to stock, requests and accounts is recorded.
Encrypted nightly backups
An automated job backs up the data every night, encrypted.
Offline Docker version
The whole system, with seed data, runs locally in Docker for testing and demos.
Outcome
What changed.
- One system for stock, requests and approvals, with two-factor sign-in for everyone.
- Every stock change and approval now has a name and a time attached.
- A separate offline copy lets the team test changes on demo data first.
Stack
- Next.js
- TypeScript
- Tailwind CSS
- Supabase (Postgres, Auth, row-level security)
- GitHub Actions
- Docker
- Netlify