nasaq.id

Back to case studies
Live production2025

LakuPOS — Kasir & Warehouse System

Production POS & warehouse system untuk client ritel nyata — barcode scanning, QRIS payment, multi-outlet inventory sync. DDD architecture dengan E2E tests.

Context

A real retail operations surface that had to work for cashier flow, stock movement, and multi-outlet reality.

Next.jstRPCSupabaseRedisQRISPOS

Project at a glance

Full-stack Point of Sale dan Warehouse Management System yang dibangun untuk client ritel nyata. Problem: client butuh sistem kasir yang handle multi-outlet, barcode scanning, dan QRIS payment dalam satu aplikasi — sebelumnya pakai Excel terpisah per cabang. Solution: POS tablet-optimized dengan 3 mode barcode scan (USB/camera/upload), real-time stock sync antar outlet, dan QRIS auto-generate. DDD architecture dengan Playwright E2E dan Jest unit tests.

What this case helps prove

Client aktif — sistem kasir harian untuk multi-outlet retail
Digunakan client nyata untuk operasional kasir & gudang harian
11 transaksi | 2 produk | 4 outlet aktif
LakuPOS — Kasir & Warehouse System screenshot

The challenge

Client butuh sistem kasir yang bisa handle multi-outlet, barcode scanning, dan QRIS payment dalam satu aplikasi

Sistem kasir sebelumnya tidak support multi-outlet
Manual stock tracking antar cabang

The response

Full-stack POS dengan DDD architecture, real-time inventory sync, dan tablet-optimized UI

Why it mattered

Client aktif — sistem kasir harian untuk multi-outlet retail

Before and after, in clearer terms

The point of this section is not decoration. It is to show the operational shift in terms the client team can immediately recognize.

Checkout process

Before

Manual hitung + ketik ulang

After

Scan barcode → auto-add ke keranjang

Stok antar outlet

Before

Excel terpisah per cabang

After

Real-time sync + transfer antar outlet

Pembayaran QRIS

Before

Manual cek rekening

After

QRIS auto-generate, verifikasi otomatis

Sistem kasirnya enak banget, bisa scan barcode langsung dari kamera. Stok antar outlet auto sync.
P

Pemilik Toko

Client LakuPOS

Key highlights of the build

Kasir dengan Barcode Scanner

3 mode scan: manual/USB scanner, kamera, dan upload gambar barcode

Multi-outlet & Stok Transfer

Kelola stok real-time per cabang dengan transfer dan stok opname

DDD & Clean Architecture

Codebase production-grade dengan layered architecture, E2E & unit tests

Impact that stayed visible

Client aktif — sistem kasir harian untuk multi-outlet retail
Digunakan client nyata untuk operasional kasir & gudang harian
11 transaksi | 2 produk | 4 outlet aktif
Production-ready dengan E2E test coverage

What the system includes

Kasir (POS) dengan keranjang multi-item dan quick-quantity buttons
Barcode scanning via kamera smartphone, USB scanner, atau upload gambar
QRIS payment integration
Multi-outlet management dengan pemilihan outlet per transaksi
Real-time stock tracking per outlet dengan low-stock alerts
Transfer stok antar outlet dengan audit log
Stok opname (physical count vs system)
Role-based access: Admin, Manager, Kasir
Forgot password via email (token single-use, 1 jam)
Analytics & laporan penjualan dengan Recharts
E2E tests dengan Playwright, unit tests dengan Jest
Error monitoring dengan Sentry
Tablet/iPad optimized UI

Technology stack

Frontend

Next.js 16React 19TypeScript 5Tailwind CSS 4Recharts

Backend & API

tRPCReact QuerySupabase (PostgreSQL)Redis (Upstash)JWT Auth

Integrations & Tools

QRIS PaymentBarcode ScannerQR CodeResend EmailSentryZod

Architecture & Testing

DDDClean ArchitectureRepository PatternPlaywright E2EJest

If this kind of operational shift is what you need, start from the problem.

The fastest useful next step is not asking for a random feature list. It is clarifying what feels weak today, what friction the team still carries, and what a cleaner first version should solve.

nasaq.id — Website, Company Profile & Custom Systems