All work
POS

Dewasinghe Jewellery POS

A multi-tenant POS and rental-management system built for a jewellery retailer — barcode-scan checkout, split payments, and a full rental lifecycle with deposits, active loans, and returns tracked through late and damage fees. Server-enforced role-based access spans eight distinct roles, from store managers to individual cashier logins, across multiple store locations.

Category
POS
Rentals+ Add Rental
ProductCustomerStatus
Gold NecklaceS. PereraActive
Diamond RingN. SilvaPaid
Bangle SetK. FernandoReserved

Overview

Built on Next.js and Supabase, the system is multi-tenant from the schema up — a businesses table sits at the root, with nearly every table (products, orders, rentals, users) carrying a business_id foreign key and Postgres row-level security scoping every query to the caller's own tenant. Multiple physical stores can operate under one business, each with its own code, address, and tax settings, and every staff account is pinned to a specific store location.

The point of sale itself handles a full retail checkout: a barcode scanner looks products up directly into the cart, sales can be parked and resumed later, and checkout supports cash, card, bank transfer, store credit, or split payments. Completing a sale writes the order, decrements inventory through a dedicated stock-movement record, and awards loyalty points automatically.

Alongside outright sales, a full rental module — reachable from a dedicated checkout flow — tracks an item from issue through to return, capturing deposits taken and refunded and applying late or damage fees when it comes back. Access is enforced server-side across eight distinct roles, from cashiers and rental managers up to store managers and a super admin, each tied to an individual login.

Stack

Next.jsElectronSupabaseTanStack TableSentry

Have a project in mind?

Happy to walk through the architecture and code behind any of these on request.

Get in touch