Langsung ke konten
Sistem Kasir cover

2024 · Sistem POS multi-tenant buat kafe — denah lantai, inventaris, dan laporan penjualan sinkron real-time via Firebase.

Sistem Kasir

Tahun
2024
Status
live

The Problem

Owner kafe kecil sibuk ngurus orderan di kertas, ngitung stok manual, tanpa tau meja mana yang lagi rame — kasir nge-order nggak tau dapur udah nutup tab-nya, akhirnya double charge, omzet kabur.

The Solve

Sistem Kasir ngasih tiap kafe workspace tenant terpisah yang sinkron lewat Firestore — owner liat status denah lantai live, kasir proses order, staff stok nyatet inventaris, semuanya dari satu web app dengan login PIN sesuai role.

Trade-off-nya: pakai Firebase Auth anonim bikin setup hampir nol, tapi data nongkrong di collection path publik bersama — masih oke buat kafe kecil satu cabang.

Screens

App Flow

  1. 01Owner daftar via panel SuperAdmin
  2. 02Workspace tenant kebentuk di Firestore dengan path collection terpisah
  3. 03Kasir login pakai PIN
  4. 04Langsung dilempar ke tampilan denah lantai interaktif
  5. 05Kasir pilih meja dan tambahin produk
  6. 06Order tercatat, meja langsung ditandai "kepake" real-time
  7. 07Order ditutup / pembayaran masuk
  8. 08Transaksi tersimpan, laporan penjualan harian update otomatis
  9. 09Staff stok nyatet pembelian inventaris
  10. 10Pengeluaran tercatat di buku stok buat di-review owner

Under the Hood

  • React 18
  • Vite
  • Firebase Firestore
  • Firebase Auth
  • Tailwind CSS

Nggak ada row-level security di sisi server; gantinya, data tiap tenant nongkrong di Firestore collection sendiri dengan pola `{collection}_{tenantId}`. Gampang banget dipasang di React satu file, tapi konsekuensinya Firestore rules harus jaga pola prefix-nya — trade-off sengaja: simpel lebih dipilih daripada batas keamanan yang ketat.

Changelog

  1. Benerin globalUsers yang nggak ke-persist ke localStorage — login kasir/staff jebol pas refresh halaman atau pindah device.

  2. Pindahin config Firebase ke environment variables.

  3. Rilis perdana: denah lantai, katalog produk, inventaris, transaksi, dan login PIN per role.