KALA POS

28 Jul 2026 • 2 min read

Sistem kasir full-stack: API Go dan React PWA yang tetap melayani penjualan ketika internet mati.

Sistem kasir untuk usaha ritel, dibangun sebagai dua bagian: REST API berbahasa Go dan React PWA yang dirancang untuk dipakai langsung di depan kasir.

Masalah yang layak diselesaikan

Internet ritel di Indonesia tidak bisa diandalkan. Kasir yang berhenti bekerja ketika koneksi putus bukan lagi alat bantu — ia jadi beban tepat di jam tersibuk.

Karena itu frontend-nya berupa PWA yang bisa dipasang. Penjualan yang dilakukan saat offline diantrikan di IndexedDB dan disinkronkan otomatis begitu koneksi kembali — kasir tidak pernah tersangkut di layar loading yang tak bisa dilewati.

Keputusan yang harus diambil

Pembatalan harus utuh, atau justru lebih berbahaya daripada tidak ada. Membatalkan transaksi tidak cukup dengan menghapus satu baris — stok harus kembali dan arus kas harus terkoreksi. Log inventaris dan pergerakan kas ditulis pada setiap penjualan, retur, dan penyesuaian, digerakkan oleh event, bukan tersebar di banyak handler.

Migrasi berjalan di instalasi nyata, bukan cuma di laptop saya. Skema dikelola dengan Atlas alih-alih SQL tulisan tangan, setelah muncul bug di mana instalasi baru dan instalasi hasil upgrade berakhir dengan skema yang berbeda.

Multi-mata uang sejak awal. Mata uang ISO mana pun bisa dipilih di pengaturan toko, dan harga, laporan, serta struk semuanya mengikuti.

Stack

Go 1.25 · Fiber · GORM · PostgreSQL · Atlas · JWT · Swagger · React 19 · Vite · Mantine · IndexedDB · Docker

Status

Fiturnya lengkap dan teruji — unit test Go, Vitest, dan 28 test end-to-end Playwright semuanya hijau, dengan setup Docker satu perintah. Sekarang sedang dikemas menjadi produk: source code-nya akan dijual untuk developer yang ingin titik awal siap produksi, bukan sekadar project tutorial.

Start searching

Enter keywords to search articles.