Skip to main content
Start a project

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

  1. 01

    Raise request

  2. 02

    Review

  3. 03

    Approve

  4. 04

    Hand over

  5. 05

    Stock updated

Each step is logged with who did it and when.

§01The problem

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.

§02Approach

How I went about it.

  1. 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.

  2. 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.

  3. 03

    Never overwrite stock

    Stock is a ledger of movements, so every number can be traced back to who changed it and when.

  4. 04

    Testable offline

    A full offline copy runs on one machine with demo data, so changes are tested without touching real records.

§03What I built

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
WhatsApp me