pos.gideon.app / laporan

Laporan

Analytics & reporting toko

Admin

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

S
S
R
K
J
S
M

Stok hampir habis 2

  • Croissant 4
  • Nasi Goreng 8
  • Roti Bakar 12
Laporan live

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.

Solo developer2025Next.jsReactTypeScriptTailwind CSS

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

  1. 1Cashier opens shift, searches product (name or barcode), adds to cart
  2. 2Optionally save draft — stock not yet deducted
  3. 3Select payment method (cash / transfer / QRIS), save & print
  4. 4Stock decreases, receipt issued, transaction enters reports
  5. 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: Kasir

Hanya input penjualan. Setelah login langsung ke Kasir. Menu lain disembunyikan.

KasirDraft

Owner

in-app: Admin

Akses penuh: master data, stok, kas, laporan, user, dan tetap bisa jualan di Kasir.

LaporanKasirDraftProdukStok / MutasiTransaksiKasSupplierCustomerAsetPengaturan
MenuKasirOwner
KasirYaYa
DraftYaYa
LaporanYa
ProdukYa
Stok / MutasiYa
TransaksiYa
KasYa
SupplierYa
CustomerYa
AsetYa
Pengaturan + UserYa
Mulai / selesai Proses Input / output Keputusan Proses sistem

KASIR

Hanya input penjualan
  1. Mulai

  2. Login sebagai Kasir

  3. Buka shift

    Isi saldo awal tunai
  4. Cari / scan produk

  5. Isi keranjang

    Qty, diskon, customer opsional
  6. Simpan draft?

    Tidak · Lanjut bayarYa · Draft — stok belum dipotong
  7. Pilih metode bayar

    Tunai / Transfer / QRIS
  8. Simpan & Cetak

  9. Cetak / WhatsApp struk

  10. Tutup shift

    Saldo fisik vs sistem
  11. Selesai

OWNER

Akses penuh (Admin)
  1. Mulai

  2. Login sebagai Owner

    Role Admin
  3. Laporan

    Omzet, laba, stok menipis
  4. Kelola produk

    Harga, foto, status
  5. Mutasi stok

    Masuk / keluar / opname
  6. Supplier & customer

  7. Kas, aset, transaksi

    Termasuk retur / refund
  8. Pengaturan & user

    Toko, pajak, role
  9. Boleh masuk Kasir

    Owner juga bisa jualan
  10. Selesai

SISTEM

Data, stok, struk
  1. Cek sesi

  2. Role Kasir?

    Tidak · Buka Laporan + semua menuYa · Buka menu Kasir saja
  3. Validasi stok

  4. Status Selesai?

    Tidak · Simpan Draf sajaYa · Potong stok + kas
  5. Tulis Transaksi + Detail

  6. Update Produk.stok

  7. Update Kas + Shift

  8. Generate struk

  9. 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.

satu → banyak
User
PKid
username
password_hash
nama
role
status
Customer
PKid
nama
wa
catatan
created_at
Produk
PKid
id_induk
satuan
barcode
nama
kategori
harga_modal
harga_jual
stok
min_stok
foto_url
foto_file_id
status
updated_at
Supplier
PKid
nama
kontak
wa
alamat
catatan
status
created_at
Kasir_Shift
PKid
tanggal
FKkasir
jam_buka
jam_tutup
saldo_awal
total_tunai
total_transfer
total_qris
pengeluaran_shift
saldo_akhir_sistem
saldo_akhir_fisik
selisih
status
catatan
Transaksi
PKid
no_invoice
tanggal
waktu
FKkasir
FKcustomer
subtotal
diskon
pajak
grand_total
metode
bayar
kembalian
status
catatan
Mutasi
PKid
no_dokumen
tanggal
waktu
tipe
FKsupplier_id
supplier_nama
user
catatan
total_nilai
update_modal
status
Kas
PKid
tanggal
waktu
tipe
kategori
jumlah
metode
FKref
sumber
catatan
user
status
Detail_Transaksi
PKid
FKtransaksi_id
no_invoice
FKproduk_id
nama_produk
qty
harga
diskon
subtotal
harga_modal
satuan
Retur
PKid
no_dokumen
tanggal
waktu
tipe
FKref_id
ref_no
total
user
catatan
status
Detail_Mutasi
PKid
FKmutasi_id
FKproduk_id
nama_produk
qty
harga_beli
subtotal
stok_sebelum
stok_sesudah
selisih
Log_Aktivitas
PKid
waktu
FKuser
aksi
detail
Pengaturan
PKkey
value
Detail_Retur
PKid
FKretur_id
FKproduk_id
nama_produk
qty
harga
subtotal
Harga_Beli_Log
PKid
FKproduk_id
tanggal
FKsupplier_id
harga_beli
FKmutasi_id
user

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.

← Back to work