Inventory for cafés and small dining places. Every sale deducts the exact grams, millilitres and cups from stock, so the owner knows what to order before the rush starts.
What it does
Recipes link every menu item to its ingredients, so stock deducts automatically
Full-screen tablet point of sale that works offline
Receive deliveries, log waste, count stock, low and out-of-stock alerts
Dashboard with sales, orders, best sellers, staff results and ingredient cost
Three roles (owner, manager, staff) and safe employee onboarding
Audit trail of every stock change, void and sign-in
Runs in the browser, on an encrypted local database, or as an Android app
Stack
React, Vite
Node and Express API
Encrypted SQLite (SQLCipher) and SQLite in WebAssembly
RESTful and GraphQL APIs built with Node.js, Express and Fastify
Authentication and authorisation — JWT, OAuth 2.0, session management
Real-time features with WebSockets and Server-Sent Events
Rate limiting, caching (Redis) and database query optimisation
ExpressSQLiteCapacitorNetlify
01
Overview
Stockroom is an inventory and point-of-sale system for cafés and small dining places. Every sale deducts the exact grams, millilitres and cups from stock, so the owner knows what to order before the rush starts.
02
The problem
Small cafés track stock in notebooks or not at all. Nobody knows how much milk or coffee a day of sales really used until something runs out mid-shift. The tool also has to work on a tablet at the counter, even when the internet drops.
03
What I built
Recipes that link every menu item to its ingredients, so stock deducts on each sale
Full-screen tablet point of sale that keeps working offline
Deliveries, waste, stock counts, and low and out-of-stock alerts
Dashboard: sales, orders, best sellers, staff results and ingredient cost
Three roles (owner, manager, staff) and safe employee onboarding
Audit trail of every stock change, void and sign-in
Runs in the browser, on an encrypted local database, or as an Android app
04
Architecture
One React front end runs three ways: in the browser against a Node and Express API, on an encrypted local SQLite database, or packaged as an Android app with Capacitor. Every sale runs the recipe and writes a stock movement and an audit entry.