Inventory as a ledger, not a number in a column. Movements with a reason, stock reserved inside the order transaction, purchase orders through to goods-in, multi-location transfers and a supplier portal. Go or Node backend, your choice.
Ledger
Every movement, with a reason
Multi-site
Locations and transfers
2
Backend editions
Atomic
Reservation inside the transaction
Two backend editions, both frontends. Self-host once. Own the code forever.
Details
Version
0.1.0
Last Updated
August 2026
Pricing
Developer
one-time
$699
TeamPopular
one-time
$1299
Extended
one-time
$2499
Details
Version
0.1.0
Last Updated
August 2026
Pricing
Developer
one-time
$699
TeamPopular
one-time
$1299
Extended
one-time
$2499
Material UI
Frontend · MUI flavor
17+ production screens
Dark mode + design tokens
DashForge component library
Tailwind CSS
Frontend · Tailwind flavor
Same 17+ screens, utility-first CSS
DashForge/tw tokens — zero MUI dep
Mobile-first, drop-in Tailwind v3
The back-office half of a commerce system: the warehouse, not the shop.
Most stock bugs come from one decision made early — keeping quantity as a number in a column and updating it in place. That works until two orders arrive in the same second, or until someone asks why the count says 14 and the shelf says 11 and nobody can reconstruct what happened.
Inventory Kit treats stock as a ledger. Quantity is derived from movements, every movement carries a reason and a reference, and nothing is ever silently overwritten.
in / out / adjust / reserve / transfer, each with a reason code and a reference to the order, purchase order or count that caused it. Current quantity is a projection, not a stored guess.SELECT … FOR UPDATE. Two customers, one last unit, one winner. The naive version of this is the single most common way a stock system loses money.This is the stock core, not an ERP. It deliberately will not include:
The rule is the same as the other kits: if it makes the application start, it is in; if it is your business domain, it is yours to build — on foundations that are documented and tested.
Same architecture as the other kits, so if you own one you already know this one.
Client — React 19, TypeScript, Vite, in both client/mui/ and client/tailwind/.
Node edition — Express + TypeScript, Postgres, JWT + bcrypt.
Go edition — Go + Gin, Postgres, standalone pkg/rbac, JWT + bcrypt.
Both editions share the same schema, the same API contract and the same SQL migrations — which is exactly why the migrations are plain .sql rather than an ORM's: two backends cannot drift from one file.
Every stock system starts as a column called quantity and a form that edits it. The rewrite comes when someone finally asks what happened between Tuesday and Friday, and the honest answer is that nobody knows.
Building the ledger version first is not over-engineering. It is the version that still tells you the truth in month eighteen.