Back
Enterprise Production Private Repo

KT-RMS

Supermarket Inventory Management System

A full-stack, offline-first inventory management PWA for a supermarket chain — built with React, Supabase, and Capacitor for cross-platform deployment on web, Android, and iOS.

The client's supermarket chain was managing inventory with manual processes. Stock counts were unreliable, popular items would go out-of-stock without warning, and warehouse staff in areas with poor connectivity had no way to record movements. They needed a custom-built system tailored to their workflows, with a full Hebrew/RTL interface — one that's easy to adopt and built incrementally to match the chain's evolving needs.

I designed KT-RMS as an offline-first, mobile-native inventory system with real-time barcode scanning, an immutable transaction ledger, role-based access control, and background sync. Staff can scan, track, and manage inventory from any device — smartphones on the warehouse floor, tablets at the dock, or desktops in the back office.

Barcode Scanning

Real-time camera-based scanning with multiple modes — Stock In, Stock Out, Lookup, Direct-to-Shelf, Return to Supplier.

Inventory Ledger

Immutable transaction ledger tracking every stock movement with a full audit trail.

Real-Time Tracking

Trigger-automated current_stock table for instant stock level queries without recalculating history.

Role-Based Access

Granular permissions system (Admin, Manager, Clerk, Trainee) with location-scoped role assignments.

Offline-First

IndexedDB storage with Dexie.js, operation queuing, and background sync for seamless transitions.

Full Hebrew / RTL

Complete internationalization with i18next, dynamic RTL/LTR layout switching.

Smart Low-Stock Alerts

Per-product configurable thresholds with parent-child pack aggregation.

CSV Import

Bulk product lookup and auto-population from supplier CSV files with Hebrew encoding support.

Frontend
React 19TypeScriptZustand + ImmerReact Router 7Tailwind CSS 4i18next
Backend
Supabase (PostgreSQL)Row-Level SecuritySQL Functions & Triggers30+ Managed Migrations
Mobile & PWA
Capacitor 7 (Android/iOS)PWA (Vite Plugin)ZXing Barcode ScannerService Workers + Workbox
Data Layer
Dexie.js (IndexedDB)Zod (Validation)PapaParse (CSV)Axios

Immutable Ledger

inventory_transactions is append-only with correction chaining via corrected_transaction_id. No edits, no deletes — full audit trail.

Derived Stock Table

current_stock is automatically maintained by PostgreSQL triggers on every transaction insert — no recalculation needed.

Hierarchical Locations

Locations support unlimited nesting via self-referencing parent_id with materialized paths and short codes for barcode labels.

32 Managed Migrations

Clean, incremental database evolution tracked in version control — from initial schema to production-grade RLS policies.

01

Barcode Scan → Stock Movement

Staff selects mode (IN/OUT/Direct-to-Shelf), scans barcode, system identifies product, opens transaction form with context-aware location filtering.

02

Product Registration

Scan unknown barcode → system checks database then CSV → auto-populates form with available data → staff completes and saves.

03

Inventory Dashboard

Real-time stock levels with low-stock highlighting, filterable views, and parent-child aggregation toggle.

This is an active, production-targeted project for a real business client. Code is private. Screenshots and live demo available on request.

Request a Demo
Buy me a coffee