Sistem Kasir Pintar (Point of Sale) Multi-Cabang & Real-Time Berbasis Android
Solusi kasir terpadu dan modern untuk mengelola transaksi penjualan, memantau multi-cabang bisnis, melacak inventori stok, dan menganalisis profitabilitas usaha secara instan.
DevSpark adalah aplikasi Point of Sale (POS) / Sistem Kasir berbasis Android modern yang dirancang khusus untuk memenuhi kebutuhan bisnis retail, F&B, dan UMKM berskala multi-cabang. Dibangun menggunakan bahasa pemrograman Kotlin dan diintegrasikan dengan Firebase Realtime Database dan Firebase Authentication, DevSpark menyajikan sinkronisasi data yang instan, responsif, dan aman antara kasir di toko fisik dengan pemilik usaha.
Aplikasi ini menyederhanakan alur transaksi harian, mengotomatiskan pengelolaan stok barang, meminimalisir kesalahan manusia (human error), serta memberikan wawasan keuntungan (profit analytics) secara real-time. Dengan antarmuka berstandar Material Design 3, DevSpark menghadirkan pengalaman pengguna yang premium, estetik, dan interaktif.
Aplikasi DevSpark dilengkapi dengan serangkaian fitur tingkat lanjut yang dirancang untuk mendukung operasional bisnis secara menyeluruh:
- Menggunakan fitur Firebase Transactions (
runTransaction) untuk memperbarui kuantitas stok produk saat transaksi diselesaikan. Proses ini menjamin tidak terjadi data race (perselisihan jumlah stok) ketika beberapa kasir di cabang yang sama melakukan checkout produk yang sama secara bersamaan. - Deteksi otomatis jenis produk tanpa batas (unlimited), membebaskan produk digital atau jasa dari pengurangan kuantitas stok fisik.
- Seluruh entitas data utama seperti Kategori, Produk/Menu, Pegawai (Kasir), dan Pelanggan di-scope secara spesifik berdasarkan ID Cabang (
idCabang). - Memungkinkan satu sistem basis data Firebase melayani banyak lokasi cabang sekaligus tanpa terjadi kebocoran data antar cabang. Pemilik bisnis dapat memantau seluruh cabang dari satu dasbor terpusat.
- Sistem secara otomatis menghitung keuntungan kotor dan bersih secara dinamis pada setiap transaksi berdasarkan selisih harga jual dan harga beli dikalikan dengan kuantitas:
$$\text{Keuntungan} = (\text{Harga Jual} - \text{Harga Beli}) \times \text{Qty}$$ - Membantu pemilik toko melihat margin keuntungan bersih secara langsung tanpa harus melakukan kalkulasi manual di akhir bulan.
- Sistem memantau batas minimum stok barang secara real-time. Jika persediaan produk jatuh di bawah ambang batas kritis (stok < 5 unit), Firebase secara otomatis memicu generator notifikasi lokal untuk memperingatkan kasir agar segera melakukan restock.
- Riwayat aktivitas kasir direkam secara transparan di bawah sub-node
notificationsdanhistoriuntuk keperluan audit operasional.
- Dilengkapi antarmuka kalkulator kasir yang efisien dengan dukungan Quick Cash Chips (Uang Pas, Rp50.000, Rp100.000) untuk mempercepat transaksi tunai.
- Mendukung pencatatan berbagai metode pembayaran modern lainnya seperti QRIS (dilengkapi simulasi scan kode QR) dan E-Wallet terkemuka (GoPay, DANA, OVO, ShopeePay).
- Setelah pembayaran dikonfirmasi, aplikasi menghasilkan struk belanja terstruktur yang dapat langsung dicetak menggunakan printer termal bluetooth atau disimpan sebagai bukti transaksi digital yang rapi.
- Terintegrasi penuh menggunakan Android Material Components (
values-night). Aplikasi mendukung perubahan tema secara dinamis mengikuti preferensi sistem operasi, memberikan kenyamanan mata kasir di kondisi pencahayaan rendah serta menghemat daya baterai perangkat OLED.
- Didukung oleh lokalisasi bahasa bawaan (
valuesuntuk Bahasa Indonesia danvalues-enuntuk Bahasa Inggris). Aplikasi secara cerdas mendeteksi bahasa aktif pada sistem operasi Android perangkat dan secara otomatis menerjemahkan antarmuka pengguna tanpa memutus sesi transaksi.
- Memanfaatkan teknologi Android modern
enableEdgeToEdge()dan pengaturan window insets agar tampilan menyatu sempurna di belakang status bar dan bar navigasi sistem. - Diperkaya dengan Animasi Meluncur & Wobble Recoil pada Splash Screen menggunakan gabungan
ObjectAnimatordanOvershootInterpolatoryang dinamis dan berkelas premium.
- Dilengkapi utilitas nirkabel khusus (
BluetoothPrinterHelper&BluetoothPermissionHelper) yang mendukung pencetakan nota fisik secara instan lewat printer thermal Bluetooth 58mm/80mm. Menyediakan tata letak struk otomatis, garis pemisah dinamis, dan penanganan status koneksi printer secara real-time untuk operasional kasir yang mulus.
| Teknologi | Versi | Peran |
|---|---|---|
| Kotlin | v2.2.10 | Bahasa pemrograman utama berkinerja tinggi |
| Android SDK | Target 36 (Android 14/15/Q) | Landasan sistem operasi seluler |
| Material Design 3 | v1.13.0 | Desain UI modern, komponen estetik, dan responsif |
| AndroidX Core KTX | v1.10.1 | Ekstensi Kotlin untuk pengembangan Android yang bersih |
| Glide | v4.16.0 | Library pemuatan dan pengoptimalan gambar produk |
| AppCompat | v1.6.1 | Menjamin kompatibilitas antarmuka pada OS versi terdahulu |
| ConstraintLayout | v2.1.4 | Pembuatan tata letak UI yang kompleks dan fleksibel |
| Teknologi | Peran |
|---|---|
| Firebase Realtime Database | Penyimpanan basis data NoSQL berlatensi rendah untuk sinkronisasi data kasir secara langsung |
| Firebase Authentication | Pengamanan akun pegawai/kasir dengan sistem otentikasi terenkripsi cloud |
| SaldoManager Utility | Pengelolaan kalkulasi akumulasi saldo toko secara otomatis saat pembayaran sukses |
- Komputer dengan OS Windows (atau macOS/Linux).
- Android Studio versi terbaru (Ladybug atau yang lebih baru direkomendasikan).
- JDK 17 atau versi terbaru.
- Koneksi internet aktif untuk sinkronisasi Gradle dan Firebase.
Jalankan perintah berikut di terminal Anda untuk menyalin proyek ke lokal komputer:
git clone https://github.com/Byatarade/DevSpark.git
cd DevSpark- Buka Firebase Console.
- Buat proyek baru dengan nama DevSpark (atau nama pilihan Anda).
- Daftarkan aplikasi Android baru dengan Package Name:
com.byatara.penjualandev. - Unduh file konfigurasi
google-services.json. - Letakkan file
google-services.jsontersebut ke dalam folder/app/proyek Anda:DevSpark/ βββ π app/ βββ google-services.json <-- Letakkan di sini - Di Firebase Console, aktifkan fitur Authentication (metode Email/Password) dan Realtime Database.
Buka proyek DevSpark menggunakan Android Studio. IDE akan secara otomatis memicu proses Gradle Sync untuk mengunduh seluruh dependensi yang tertera di file build.gradle.kts dan gradle/libs.versions.toml.
- Hubungkan perangkat Android fisik via USB Debugging, atau aktifkan Android Virtual Device (Emulator) di Android Studio.
- Klik tombol Run 'app' (
Shift + F10) di bagian atas bar Android Studio. - Aplikasi siap digunakan!
Aplikasi memiliki alur otentikasi mandiri terpadu demi keamanan data transaksi cabang:
- Registrasi Akun Baru: Pengguna mendaftarkan akun pegawai/kasir melalui halaman Register dengan melengkapi nama, email, nomor telepon, password, serta menentukan cabang tempat bertugas.
- Login Akun: Masuk menggunakan kredensial terdaftar untuk memuat data khusus sesuai ID Cabang pegawai secara otomatis.
- Penyimpanan Status Sesi: Menggunakan proteksi Firebase Auth session, sehingga kasir tidak perlu berulang kali memasukkan password setiap kali membuka aplikasi.
DevSpark/
βββ π app/
β βββ π src/
β β βββ π main/
β β β βββ π java/com/byatara/penjualandev/
β β β β βββ π adapter/ # Adapter RecyclerView untuk produk, keranjang, order, dll.
β β β β βββ π cabang/ # Aktivitas dan dialog manajemen data Cabang Toko
β β β β βββ π kategori/ # Aktivitas CRUD kategori produk
β β β β βββ π model/ # Entitas model Firebase (Cabang, Order, Produk, dll.)
β β β β β βββ ModelCabang.kt
β β β β β βββ ModelHistori.kt
β β β β β βββ ModelKategori.kt
β β β β β βββ ModelNotification.kt
β β β β β βββ ModelOrder.kt
β β β β β βββ ModelOrderItem.kt
β β β β β βββ ModelPegawai.kt
β β β β β βββ ModelPelanggan.kt
β β β β β βββ ModelProduk.kt
β β β β βββ π pegawai/ # Manajemen data staf / kasir toko
β β β β βββ π pelanggan/ # Manajemen data pelanggan setia
β β β β βββ π produk/ # Manajemen katalog produk / menu makanan & minuman
β β β β βββ π util/ # Utilitas formatting Rupiah & asisten umum
β β β β βββ π utils/ # SaldoManager dan utilitas status transaksi
β β β β βββ π viewmodel/ # Manajemen state data dinamis UI
β β β β β
β β β β βββ Exit.kt # Utilitas konfirmasi keluar aplikasi
β β β β βββ HistoriActivity.kt # Riwayat jejak log aktivitas cabang
β β β β βββ LaporanActivity.kt # Grafik & ringkasan omset penjualan harian/bulanan
β β β β βββ LoginActivity.kt # Halaman otentikasi login masuk kasir
β β β β βββ MainActivity.kt # Beranda Dasbor utama dan navigasi menu utama
β β β β βββ NotificationActivity.kt # Pusat notifikasi peringatan stok dan transaksi
β β β β βββ PembayaranActivity.kt # Proses checkout kasir dengan kalkulator tunai & e-wallet
β β β β βββ PrintHistoryActivity.kt # Riwayat struk tercetak
β β β β βββ ProfileActivity.kt # Pengaturan data profil kasir aktif
β β β β βββ ReceiptActivity.kt # Halaman struk digital akhir & simulasi print
β β β β βββ RegisterActivity.kt # Halaman registrasi staf kasir baru
β β β β βββ SplashActivity.kt # Layar sambutan awal aplikasi
β β β β βββ TransaksiActivity.kt # Halaman utama transaksi POS (pilih produk & keranjang)
β β β β
β β β βββ π res/
β β β βββ π layout/ # Desain antarmuka XML layout (Activity, Row, Dialog)
β β β βββ π values/ # Resourcestring, warna dinamis, dan tema Material 3
β β β
β β βββ google-services.json # File kredensial Firebase (sensitif)
β βββ build.gradle.kts # Konfigurasi dependensi modul aplikasi
β
βββ π Documentation/ # Kumpulan tangkapan layar dokumentasi aplikasi
βββ build.gradle.kts # Konfigurasi project-level gradle
βββ settings.gradle.kts # Pendaftaran modul & repository gradle
βββ gradle/libs.versions.toml # Manajemen versi pustaka eksternal terpusat
Meskipun Firebase menggunakan struktur NoSQL JSON Tree, hubungan relasional antar entitas di DevSpark dirancang dengan ketat demi menjaga keutuhan relasi master-transaksi:
erDiagram
CABANG ||--o{ PEGAWAI : "memiliki_staf"
CABANG ||--o{ PELANGGAN : "terdaftar_di"
CABANG ||--o{ KATEGORI : "mengelompokkan"
CABANG ||--o{ PRODUK : "menyimpan_stok"
CABANG ||--o{ ORDER : "mencatat_transaksi"
KATEGORI ||--o{ PRODUK : "kategori_barang"
ORDER ||--|{ ORDER_ITEM : "berisi"
ORDER_ITEM }|--|| PRODUK : "membeli_produk"
ORDER ||--o{ HISTORI : "mencatat_log"
PRODUK ||--o{ NOTIFICATION : "memicu_peringatan_stok"
CABANG {
string idCabang PK
string namaCabang
string alamatCabang
string teleponCabang
}
PEGAWAI {
string idPegawai PK
string idCabang FK
string namaPegawai
string emailPegawai
string teleponPegawai
string rolePegawai
}
PELANGGAN {
string idPelanggan PK
string idCabang FK
string namaPelanggan
string emailPelanggan
string teleponPelanggan
string alamatPelanggan
}
KATEGORI {
string idKategori PK
string idCabang FK
string namaKategori
string deskripsiKategori
}
PRODUK {
string idProduk PK
string idCabang FK
string idKategori FK
string namaProduk
string fotoProduk
string deskripsiProduk
int stokProduk
string tanpaBatas
int hargaBeli
int hargaJual
string tipeKeuntungan
string manajemenStok
string statusProduk
string createdAt
string updatedAt
int jumlahTerjual
}
ORDER {
string idOrder PK
string idCabang FK
string namaKasir
string namaPelanggan
string nomorMeja
string catatan
string metodeBayar
int subtotal
int pajak
int totalHarga
int uangDiterima
int kembalian
string status
long timestamp
string tanggalWaktu
int keuntungan
}
ORDER_ITEM {
string idProduk PK, FK
string namaProduk
string fotoProduk
int hargaJual
int hargaBeli
int qty
int subtotal
string tanpaBatas
}
NOTIFICATION {
string id PK
string targetId FK
string type
string title
string message
long timestamp
boolean isRead
}
HISTORI {
string idHistori PK
string judul
string deskripsi
string tipe
long timestamp
string tanggalWaktu
}
- Otentikasi Aman: Registrasi dan verifikasi identitas kasir diproteksi sepenuhnya di sisi server oleh Firebase Authentication.
- Isolasi ID Cabang (Data Isolation): Query data pada aplikasi disaring ketat berdasarkan
idCabangyang melekat pada akun kasir yang masuk. Hal ini mencegah kasir dari Cabang A untuk membaca atau memodifikasi data keuangan dan inventori di Cabang B. - Integritas Stok via Firebase Database Rules: Firebase Realtime Database dapat disematkan aturan validasi untuk memastikan nilai
stokProduktidak pernah diisi dengan nilai minus (.validate: "newData.val() >= 0").
Berikut adalah visualisasi antarmuka dari aplikasi DevSpark yang dikelompokkan secara terstruktur mulai dari halaman otentikasi hingga transaksi:
Sistem otentikasi modern untuk memproteksi masuknya pegawai ke dasbor kasir.
Halaman Login |
Halaman Registrasi Kasir |
Dasbor ringkasan performa cabang kasir, log histori, dan pusat notifikasi.
Beranda Utama |
Log Histori |
Pusat Notifikasi |
Profil Pengguna |
Konfirmasi Keluar |
Pengelolaan data lokasi fisik dari cabang-cabang bisnis.
Daftar Cabang |
Detail Informasi Cabang |
Tambah Cabang Baru |
Pengorganisasian produk berdasarkan klasifikasi/kategori.
Daftar Kategori |
Detail Kategori |
Tambah Kategori Baru |
Katalog menu/produk dagang yang dijual lengkap dengan harga beli, harga jual, dan kontrol stok.
Daftar Menu & Produk |
Detail Informasi Menu |
Tambah Menu Baru |
Pengaturan keanggotaan staf kasir di setiap cabang bisnis.
Daftar Pegawai |
Detail Data Staf |
Daftarkan Pegawai Baru |
Basis data identitas pelanggan loyal pendukung program loyalitas atau pencatatan transaksi terarah.
Daftar Pelanggan |
Detail Pelanggan |
Tambah Pelanggan Baru |
Proses POS yang sangat komprehensif mulai dari pemilihan produk, pengaturan profil kasir/pelanggan, hingga konfirmasi pembayaran multi-metode (Tunai/QRIS/E-Wallet).
Katalog Belanja POS |
Pilih Pelanggan |
Pilih Pegawai |
Keranjang Belanja |
Metode Pembayaran |
Kalkulator Tunai |
Simulasi Pembayaran QRIS |
Pilihan E-Wallet |
Ubah Staf/Pelanggan |
Statistik performa penjualan cabang harian/bulanan beserta omset kumulatif yang terdokumentasi.
Dasbor Ringkasan Laporan |
Filter Laporan per Rentang Tanggal |
Simulasi struk penjualan terstruktur siap cetak.
Halaman Struk Pembayaran |
Struk Belanja Terstruktur |
Kontribusi dari seluruh pengembang sangat kami hargai! Jika Anda ingin meningkatkan fungsionalitas DevSpark:
- Fork repositori ini ke akun Anda: Byatarade/DevSpark
- Buat branch fitur baru:
git checkout -b feature/NamaFiturKeren - Commit perubahan Anda dengan pesan yang jelas:
git commit -m 'feat: menambahkan integrasi printer thermal bluetooth' - Push ke branch Anda:
git push origin feature/NamaFiturKeren - Ajukan Pull Request (PR) dan tunggu ulasan dari maintainer.
Harap patuhi konvensi penulisan commit berstandar Conventional Commits.
Dibuat dengan dedikasi penuh menggunakan Β
Β dan Β
Β serta Β
Created with β€οΈ by Byatarade Menghadirkan efisiensi dalam setiap kedipan transaksi.


































