Guide / build or buy

An inventory system in HTML, CSS and JavaScript

You can absolutely build one — a working demo in a weekend, honestly. The limit arrives when the record must be shared, trusted and connected to money, which is the line between a project and a system.

The key facts

  • Yes, it can be built: HTML for the forms, CSS for the tables, JavaScript for the logic — a functional single-user demo is a weekend of work.
  • What it lacks: a real database, multi-user concurrency, audit trail, and any connection to purchasing or accounting.
  • Where self-building genuinely fits: learning, prototyping a data model, or a personal single-user list.
  • The middle path: a real inventory system with a public API — build on the record instead of building the record.
Diagram — index of this pageThe ground this page covers
  1. 01The key facts
  2. 02What building it yourself gets you
  3. 03The four things a demo cannot do
  4. 04The middle path: build on a real record

What building it yourself gets you

A single-page app in HTML, CSS and JavaScript can hold a product list, add and subtract quantities, flag low stock and look clean doing it. As a learning exercise or a prototype, that has real value — you will understand your own data model (products, movements, locations) better after building it than after reading any article.

The honest limit is that the browser has no memory. Without a database behind it, the record lives in localStorage or vanishes on refresh; with one hobbyist database behind it, the record belongs to one machine and one person. Two people using the system simultaneously is the moment a weekend project meets concurrency — the problem real inventory systems exist to solve.

Genuine BSimple screenThe BSimple reorder screen working against live stock levels.
The BSimple reorder screen working against live stock levels.

The four things a demo cannot do

  • Shared truth. Two users, two devices, one quantity — concurrency and conflict handling are database engineering, not front-end work.
  • Real movements. Receiving against a purchase order, picking against an order, adjusting at a count: each is a transaction with rules and an audit trail, not a number in a cell.
  • The money boundary. Invoices, GST handling and the accounting handoff — what the accounting integration does — are outside what a front-end app should touch.
  • Staying correct. Batch numbers, expiry, stocktakes, price variance: the domain logic grows faster than the interface does.

This is why the self-built path and the bought path converge: the interface was never the hard part.

DiagramDiagram: spreadsheet data imported into live stock records.
Diagram: spreadsheet data imported into live stock records.

The middle path: build on a real record

If the goal is software you shape yourself, the practical version is an inventory system with a public API: the record, transactions and guardrails live in the product, and your HTML/CSS/JavaScript talks to it. BSimple exposes a public REST API with API keys and scopes covering read projections — suppliers, locations, reorder levels, stocktakes, purchase orders, transfers — plus an MCP endpoint for AI-assistant access. A dashboard or internal tool built on that is hours of work and inherits the ledger rather than imitating it.

For understanding the data model before you build anything, the use-case diagram guide sketches the actors and movements, and the architecture guide shows what the layers of a real system are. Both are the honest prerequisites for the build-or-buy decision — and the inventory management guide is the system-side view.

DiagramOrderPick and packInvoiceXero
Diagram: Order → Pick and pack → Invoice → Xero — how this work moves through BSimple.

Frequently Asked Questions

Can I build an inventory management system with HTML, CSS and JavaScript?

A single-user demo, yes — and it is worth building to learn your own data model. A business system needs a database, concurrency, an audit trail and integrations behind that front end, which is where self-built stops and real systems start.

What do I need to add to make it multi-user?

A server-side database, authentication, and transaction logic — at which point you are building the back end of an inventory product, not a page. Most teams that reach this step switch to evaluating systems rather than maintaining one.

Does BSimple let me build my own tools on top?

Yes — the public REST API serves read projections (stock, reorder, suppliers, stocktakes, purchase orders, transfers) with scoped API keys, and an MCP endpoint for AI assistants. Your interface, our ledger: you build the view without owning the record.

When is building your own the right call?

When the goal is learning, a prototype, or an internal view over an existing record. When the goal is a trustworthy stock record that orders, counts and invoices agree on, adopt a system — the hard parts are precisely the ones that do not show in the browser.

BSimple

Get started with BSimple