Laporan
Analytics & reporting toko
Omzet
Rp 1.240.000
+12% vs kemarin
Laba
Rp 418.000
+9% vs kemarin
Transaksi
47
+3 vs kemarin
Produk terjual
127
+6 vs kemarin
Omzet 7 hari
Hari ini
Stok hampir habis 2
- Croissant 4
- Nasi Goreng 8
- Roti Bakar 12
Omzet, laba, dan stok menipis — dibaca langsung, tanpa gabung file di akhir hari.
01 / Product
Point of Sales
Cashier on mobile & laptop, automatic stock, revenue & profit reports — one web app for SMEs.
03 / Context
Problem
SMEs often record sales on paper, chat, or separate files. Stock is inaccurate, receipts are slow, and revenue-profit reports must be calculated manually at the end of each day.
04 / Concept
Solution
Built a lightweight web POS: cashier with product/barcode search, cart + draft, stock automatically decreases when transaction completes, receipt ready for print/WhatsApp, and live reports without separate spreadsheets.
01 / Outcome
Deliverable
- Web cashier app (mobile & laptop) with Order → Pay → Receipt flow
- Product master, stock, and low stock alerts
- Revenue, profit, payment method, and best-selling product reports
- Cashier shift, optional customer, and multi-user (admin / cashier)
02 / Process
Workflow
- 1Cashier opens shift, searches product (name or barcode), adds to cart
- 2Optionally save draft — stock not yet deducted
- 3Select payment method (cash / transfer / QRIS), save & print
- 4Stock decreases, receipt issued, transaction enters reports
- 5Owner reads revenue-profit dashboard and low stock alerts
05 / System
Architecture
- UI: Next.js App Router + React client views (Reports, Cashier, Products, Transactions)
- State: cart, draft, shift, and report filters in TypeScript
- Data: Product, Transaction, Transaction_Detail, Customer, User, Settings tables
- Output: thermal/PDF receipt + WhatsApp share from completed transaction
06 / Diagram
Flowchart
Dua role: Kasir hanya jualan (Kasir + Draft). Owner (Admin) melihat laporan, master data, stok, kas, dan user — dan tetap bisa masuk Kasir.
Kasir
in-app: KasirHanya input penjualan. Setelah login langsung ke Kasir. Menu lain disembunyikan.
Owner
in-app: AdminAkses penuh: master data, stok, kas, laporan, user, dan tetap bisa jualan di Kasir.
| Menu | Kasir | Owner |
|---|---|---|
| Kasir | Ya | Ya |
| Draft | Ya | Ya |
| Laporan | — | Ya |
| Produk | — | Ya |
| Stok / Mutasi | — | Ya |
| Transaksi | — | Ya |
| Kas | — | Ya |
| Supplier | — | Ya |
| Customer | — | Ya |
| Aset | — | Ya |
| Pengaturan + User | — | Ya |
KASIR
Hanya input penjualanMulai
Login sebagai Kasir
Buka shift
Isi saldo awal tunaiCari / scan produk
Isi keranjang
Qty, diskon, customer opsionalSimpan draft?
Tidak · Lanjut bayarYa · Draft — stok belum dipotongPilih metode bayar
Tunai / Transfer / QRISSimpan & Cetak
Cetak / WhatsApp struk
Tutup shift
Saldo fisik vs sistemSelesai
OWNER
Akses penuh (Admin)Mulai
Login sebagai Owner
Role AdminLaporan
Omzet, laba, stok menipisKelola produk
Harga, foto, statusMutasi stok
Masuk / keluar / opnameSupplier & customer
Kas, aset, transaksi
Termasuk retur / refundPengaturan & user
Toko, pajak, roleBoleh masuk Kasir
Owner juga bisa jualanSelesai
SISTEM
Data, stok, strukCek sesi
Role Kasir?
Tidak · Buka Laporan + semua menuYa · Buka menu Kasir sajaValidasi stok
Status Selesai?
Tidak · Simpan Draf sajaYa · Potong stok + kasTulis Transaksi + Detail
Update Produk.stok
Update Kas + Shift
Generate struk
Commit
07 / Data
Database Design
Skema relasional POS. Kotak = tabel, PK emas, FK hijau. Kolom lengkap mengikuti sheet asli; tabel yang tinggi bisa digulir di dalam kotak. Kaki gagak = sisi banyak.
08 / Features
Full Features
Web POS modules for daily store operations — short, but covering cashier to reports.
Mobile & desktop cashier
Search by name or scan barcode, add to cart, choose cash / transfer / QRIS, then save & print. Same flow at counter or on mobile.
Draft order
Save unpaid shopping carts. Stock is not deducted until status becomes Completed.
Automatic stock
Completed transactions deduct product stock. In / out / stocktake mutations for warehouse corrections.
Cashier shift
Open shift with opening balance, close with cash–transfer–QRIS totals vs physical cash. Variance is recorded.
Receipt & WhatsApp
Thermal or PDF receipt after payment, ready to print or share with customers.
Live reports
Revenue, profit, payment methods, and best sellers without merging files at end of day.
Product master
Barcode, category, unit, cost/sale price, min stock, photo, active/inactive status.
Customer & supplier
Optional customers (default General). Suppliers linked to inbound stock mutations.
Cash & returns
Sales income flows into cash book. Sales/purchase returns adjust stock and invoice status.
Stock mutations
Inbound from supplier, non-sales outbound, and stocktake. Each mutation updates stock and is logged in history.
Multi-user
Cashiers see Cashier + Draft only. Owner (Admin) gets all menus including store settings and users.
Store settings
Store name, tax, receipt, active payment methods, and user accounts — no code changes needed.