Kebutuhan
Bisnis multi-cabang membutuhkan catatan penjualan, stok, kas, dan keuangan yang konsisten saat staf bekerja dari perangkat berbeda.
POS Multi-Cabang, ERP & SaaS
Platform multi-tenant yang menghubungkan penjualan kasir, akuntansi, inventori, loyalitas, dan penggajian di Web, Windows, serta Android.
Angka ini menunjukkan cakupan produk dalam dokumentasi, bukan dampak pengguna atau bisnis yang telah diukur.

Bisnis multi-cabang membutuhkan catatan penjualan, stok, kas, dan keuangan yang konsisten saat staf bekerja dari perangkat berbeda.
Peran saya tercantum sebagai Fullstack Developer. Dokumen proyek menjelaskan sistem React/Laravel, tetapi tidak merinci kepemilikan pribadi atas setiap modul.
Dokumen proyek menjelaskan satu klien React untuk tiga platform, empat peran akses, lima pilar bisnis, serta modul administrasi SaaS terpisah.
ArFi Aps melayani kasir, manajer cabang, pemilik usaha, dan operator platform. Alur kerja mereka memakai data penjualan, stok, kas, dan keuangan yang saling terhubung antar-cabang dan perangkat.
Peran saya adalah Fullstack Developer. Dokumen proyek menjelaskan area rekayasa berikut tanpa memisahkan kontribusi pribadi saya dari pekerjaan tim:
Klien React dan TypeScript yang sama melayani Web PWA, Windows melalui Electron, dan Android melalui Capacitor. DeviceAdapter menangani koneksi printer dan laci kasir sesuai platform.
Laravel menyediakan REST API dengan autentikasi JWT, policy, serta pembatasan akses berdasarkan tenant dan cabang untuk operator platform, pemilik usaha, manajer, dan kasir.
PostgreSQL menyimpan jurnal double-entry, pergerakan stok append-only, dan nilai Rupiah berbentuk integer; Redis dan Horizon menjalankan agregat penjualan di latar belakang.
Empat alur berikut menunjukkan hubungan antara operasional harian, catatan keuangan, dan administrasi SaaS.
Kasir memindai produk, menerapkan voucher atau poin loyalitas, menerima pembayaran tunai atau metode lain yang didukung, lalu mencetak struk. Penjualan masuk ke catatan stok dan jurnal; shift ditutup dengan rekonsiliasi kas.
Manajer cabang meninjau pergerakan stok, mencatat restock atau stok opname, dan menyetujui penyesuaian. Setiap cabang dapat memakai katalog produk bersama atau mengelola persediaannya sendiri.
Pemilik usaha mengelola akun, pembelian, piutang, aset, dan penggajian. Aktivitas POS dan bisnis menghasilkan jurnal double-entry untuk laporan laba rugi, neraca, dan buku besar.
Super admin mendaftarkan tenant, admin utama, dan cabang awal dalam satu transaksi. Kendali modul dan tampilan mitra read-only yang diaudit mendukung operasional platform.
Tangkapan layar ini memperlihatkan administrasi usaha, operasional kasir, laporan cabang, akuntansi custom, dan pemantauan platform di ArFi Aps.
01 / 05
Halaman ringkasan admin mitra usaha menampilkan grafik penjualan tujuh hari, panel cara pembayaran, serta pintasan untuk mencetak laporan atau menambah produk. Menu samping mengelompokkan POS, akuntansi, CRM, HRM, dan pengaturan.

02 / 05
Halaman kasir menempatkan pencarian produk, filter kategori, dan pemindaian di sebelah pesanan aktif. Keranjang menampilkan jumlah dan harga, sementara koneksi printer, penutupan shift, dan tombol pembayaran tetap terlihat.

03 / 05
Laporan manajer cabang dapat difilter berdasarkan cabang dan tanggal. Tampilannya memuat pemasukan, pengeluaran, laba bersih, jumlah transaksi, layanan terlaris, dan ringkasan stok per cabang.

04 / 05
Ruang kerja akuntansi custom membuka Buku Besar dengan filter akun, cabang, dan tanggal. Menu samping mengarah ke laporan keuangan dan alat pembukuan; tangkapan layar ini diambil sebelum akun dipilih, sehingga belum ada entri buku besar yang ditampilkan.

05 / 05
Ringkasan platform menyatukan jumlah mitra dan cabang, total penjualan, shift berjalan, grafik penjualan 14 hari, serta penjualan per mitra untuk pemantauan lintas usaha.

Dokumen proyek mengaitkan setiap pilihan desain dengan kebutuhan praktis: pembukuan akurat, akses perangkat, isolasi tenant, atau alur kasir yang responsif.
Nilai uang menggunakan integer Rupiah, sedangkan penjualan, pergerakan stok, dan jurnal mempertahankan riwayat audit append-only. Nama serta harga produk disimpan saat penjualan terjadi.
Koreksi memerlukan entri pembatalan, transaksi pengganti, atau jurnal pembalik, bukan mengubah catatan lama secara langsung.
React melayani Web PWA, desktop Electron, dan aplikasi Android Capacitor. DeviceAdapter menyediakan antarmuka cetak yang sama bagi alur POS.
Pencetakan melalui LAN, Bluetooth, USB, Web Serial, dan browser tetap memerlukan adapter khusus per platform.
Autentikasi JWT, policy Laravel, serta pembatasan tenant dan cabang memisahkan empat peran. Tampilan untuk dukungan mitra bersifat read-only dan diaudit.
Setiap permintaan bisnis harus menerapkan batas tenant, cabang, dan peran yang tepat.
Redis dan Laravel Horizon memperbarui agregat penjualan harian melalui pekerjaan latar belakang; dashboard membaca tabel agregat tanpa menghitung ulang setiap transaksi.
Tampilan agregat mengikuti jadwal pekerjaan latar belakang, bukan diperbarui di dalam permintaan kasir.
Klien bersama memanggil API Laravel yang memahami batas tenant; API menulis ke PostgreSQL dan mengirim pekerjaan latar belakang ke Redis serta Horizon. DeviceAdapter menyatukan akses pencetakan bagi alur POS.
Satu frontend React 19 dan TypeScript melayani Web PWA, desktop Windows melalui Electron 31, dan Android melalui Capacitor 6. RxJS dan custom reactive hooks mengelola stream barcode, event modal, serta sinkronisasi keranjang.
DeviceAdapter menghubungkan printer struk ESC/POS 58mm/80mm melalui LAN port 9100, Bluetooth SPP, USB/COM, Web Serial, atau pencetakan browser. Transaksi tunai dapat memicu pembukaan laci kasir fisik.
Laravel 12/13 dan PHP 8.4+ menyediakan REST API dengan JWT, refresh token, policy, serta pembatasan tenant/cabang. Arsitektur Service-Repository memisahkan logika bisnis, sementara Redis dan Horizon memproses pekerjaan latar belakang.
PostgreSQL 16+ menyediakan integritas relasional, indexing barcode, dan transaksi atomik. Redis 7+ mendukung cache serta antrean, ULID mengidentifikasi entitas, dan nilai integer Rupiah menjaga presisi keuangan.
Mengoperasikan platform SaaS: mengelola mitra, ketersediaan modul, analitik pendapatan agregat, dan tampilan mitra read-only yang diaudit.
Mengelola cabang, bagan akun, produk, laporan keuangan, staf, dan pengaturan toko dalam satu tenant.
Mengawasi kasir, menyetujui penyesuaian stok, serta mengelola pemasukan dan pengeluaran cabang, tata meja, dan laporan shift cabang.
Memindai produk, membuka dan menutup shift, memproses penjualan, mencatat mutasi kas kecil, serta mencetak struk.
React 19, TypeScript, Vite 8, RxJS
Electron 31, electron-vite, node-thermal-printer
Capacitor 6, capacitor-tcp-socket
Laravel 12/13, PHP 8.4+, JWT (tymon/jwt-auth)
PostgreSQL 16+, Redis 7+, Laravel Horizon
ULID, Integer Rupiah, Ledger Append-Only
PHPUnit 12, Vitest 4, oxlint, tsc -b
GitHub Actions, VPS
Dokumen proyek mencantumkan pengujian otomatis backend dan frontend, linting, pemeriksaan tipe, serta alur CI/CD. Laporan pengujian publik, audit aksesibilitas, dan pengukuran waktu transaksi kasir belum tersedia.
Dokumen proyek mencantumkan pengujian unit dan fitur PHPUnit untuk layanan Laravel.
Dokumen mencantumkan Vitest 4, oxlint, dan pemeriksaan TypeScript dengan tsc -b.
GitHub Actions tercantum untuk pemeriksaan otomatis dan deployment ke VPS.
Dokumen yang diberikan menjelaskan hasil implementasi, belum menyajikan bukti adopsi, kecepatan transaksi, atau dampak bisnis. Hasil kerja berikut didukung oleh dokumentasi: