Back to Work
KRY-04 · Case Study Live

QIMS.

A multi-tenant inventory & point-of-sale SaaS for retail. Built up from an open-source inventory base (MIT) into a commercial platform: one codebase serving many isolated stores — with multi-branch, POS (thermal receipts + PDF invoices), a Flutter cashier app, and an integration REST API. QMT's own product, live.

Product
QIMS (QMT's own product)
Role
Solo full-stack (web + mobile + API)
Platform
Web admin/POS · Android · iOS · REST API
Core stack
Laravel 12 · Livewire 3 · Flutter
Overview · Multi-tenant SaaS

One codebase, many isolated stores.

I transformed an open-source inventory base into a SaaS platform: per-tenant data isolation, super-admin & subscriptions, per-branch stock with inter-branch transfers, multi-unit / wholesale pricing, then a POS with thermal receipts & PDF invoices — and transactional services that auto-post the finance ledger (sales → income, purchases → expense).

32Business models
65DB migrations
42Controllers
133Commits (~7 wks)
Laravel 12Livewire 3Alpine.jsTailwindPowerGridSanctum (REST API)DomPDFFlutterMySQLDocker

The base inventory/POS module is derived from an MIT-licensed open-source project. API endpoints, credentials & tenant data are hidden for security.

QIMS module diagram: multi-tenant core, multi-branch inventory, sales & POS, finance ledger, Flutter app, and API + integrations
Modules — a multi-tenant SaaS platform
QIMS transaction flow: web/Flutter POS, SaleService with DB transaction and lockForUpdate, base-unit stock decrement, automatic finance ledger, then receipt/invoice
Transaction flow — a sale drives stock + ledger + receipt
Details — Dossier What was built & its impact

What I built

  • Multi-tenancy migration — per-tenant data isolation, a super-admin panel + activity log, a Plan/subscription model, and tenant-scoped caching & search (prevents data leaks between stores).
  • Multi-branch — per-branch stock (ProductBranchStock), inter-branch stock transfers, a branch switcher + all-branches mode, and per-branch receipt headers/footers.
  • Multi-unit & wholesale pricing — one product sold/bought in many units (pcs/strip/box) with a conversion_factor and non-linear pricing; stock lives in a base unit, every transaction carries quantity_in_base.
  • POS & documents — 58/80mm thermal receipt printing, auto-fit single-page PDF invoices (DomPDF), multiple payment methods, cashier shifts, customer wallet, and trade-in.
  • Service architecture — a thin Controller/Livewire → Service → DTO pattern; transactional services lock rows (lockForUpdate) and auto-post the finance ledger (sale → income, purchase → expense).
  • Flutter mobile app — a branch-aware cashier & receipt builder (Android/iOS) consuming the V1 REST API (Sanctum) with multi-unit support + fallback for older clients.
  • API & integrations — a V1 REST API (Sanctum), with Bujang Kurir (super-admin panel) and Gerai (sales source-tagging + per-branch stock) integrations.

Outcome & impact

  • A live/commercial SaaS product (founding-member) — one platform serving many fully isolated stores/tenants.
  • Data stays consistent — every stock & money mutation goes through one row-locking transactional service, used identically by web and mobile.
  • Full stack from one codebase — web admin/POS (Livewire) + mobile (Flutter) + REST API; 32 models, 65 migrations, 42 controllers, 133 commits in ~7 weeks.

Need an inventory/POS SaaS or a multi-branch cashier app?

I help design & build similar systems — web admin, POS, a mobile app, and the backend — from scratch or by extending what you already have. Scope & cost are clear upfront.

Free Consultation via WhatsApp