Kasir yang tetap jalan waktu internet mati
Sepiring POS
Sistem kasir Android untuk restoran yang bekerja penuh tanpa internet, mencetak struk ke printer termal, dan menyinkronkan datanya belakangan.
Masalahnya
Restoran tidak bisa berhenti melayani hanya karena internet putus. Tapi kasir yang sepenuhnya offline juga tidak berguna kalau pemiliknya tidak pernah bisa melihat laporan dari luar. Keduanya harus jalan sekaligus.
Alur penggunanya
- Staf masuk dengan PIN, membuka shift, dan mulai menerima pesanan — semuanya dari database di dalam tablet itu sendiri.
- Pesanan dibayar tunai atau terbagi ke beberapa metode, lalu struk dan tiket dapur dicetak ke printer termal lewat Bluetooth.
- Shift ditutup, dan sistem menghitung sendiri berapa uang tunai yang seharusnya ada di laci.
- Pelanggan yang memindai QR di meja bisa memesan sendiri dari ponselnya, dan pesanan itu masuk ke antrean kasir yang sama.
Yang dibangun
Aplikasi React di dalam Capacitor dengan dua plugin Kotlin yang saya tulis sendiri: satu untuk mencetak ESC/POS lewat Bluetooth Classic, satu lagi untuk SQLite native. Di belakangnya ada PostgreSQL dan API Express yang saya jalankan sendiri, bukan layanan pihak ketiga.
Arsitektur
Bagian yang sulit
Printer termal Bluetooth tidak didukung Web Bluetooth, jadi tidak ada jalan pintas lewat browser — plugin native harus ditulis. Dan pencetakannya tidak bisa dianggap berhasil sebelum diuji ke perangkat fisik sungguhan.
Hasilnya
- Alur kasir lengkap berjalan offline penuh: login, buka shift, pesan, bayar, cetak, tutup shift, laporan harian.
- Pencetakan diverifikasi di printer termal fisik, bukan hanya di emulator.
- Pemesanan mandiri lewat QR berjalan di production, dan restoran kedua sudah dibuat lewat dashboard oleh pemiliknya sendiri.
- Pembaruan aplikasi dikirim sendiri tanpa melalui toko aplikasi, dan tidak pernah diterapkan di tengah shift.
Yang belum selesai
Belum ada alur persetujuan manajer untuk selisih kas, diskon, atau pembatalan — siapa pun yang login bisa melakukannya. Refund juga baru bisa untuk satu pesanan penuh, belum per item. Keduanya sudah tercatat sebagai pekerjaan berikutnya.
Peran saya
Product, arsitektur, aplikasi, plugin native, backend, dan operasional.
- Dicatat oleh
- Ihsan Nugraha
- Diperiksa
- 6 Agu 2026, 17.17 WIB
- Cara verifikasi
- Klik URL mana pun di halaman ini
- Dicatat oleh