Profil dan Tujuan Aplikasi
Volume 1: Dokumentasi Zhuzhe POS Enterprise
1. Profil dan Tujuan Aplikasi
1.1 Deskripsi Umum
Zhuzhe POS Enterprise adalah solusi perangkat lunak manajemen titik penjualan (Point of Sale) berbasis Cloud yang dirancang untuk skala bisnis menengah hingga besar (Enterprise). Sistem ini memungkinkan pemilik bisnis mengelola banyak cabang (Multi-Store) dalam satu platform terpusat dengan isolasi data yang sangat ketat.
Berbeda dengan POS sederhana, Zhuzhe POS mengadopsi arsitektur Multi-Tenant, di mana setiap cabang toko memiliki ekosistem data mandiri mulai dari katalog produk, stok gudang, hingga basis data pelanggan, namun tetap di bawah pengawasan Super Admin di Kantor Pusat.
1.2 Tujuan Utama
Skalabilitas Bisnis: Memudahkan ekspansi toko dari 1 cabang menjadi ratusan cabang tanpa kendala sinkronisasi data.
Integritas Stok: Menjamin keakuratan data inventaris melalui sistem Audit Trail (Mutasi Stok) yang mencatat setiap barang masuk dan keluar.
Fleksibilitas Operasional: Mendukung berbagai model bisnis mulai dari Ritel (Minimarket), F&B (Restoran/Cafe), hingga distribusi (Toko Bangunan).
Keamanan Data: Mengamankan transaksi dari manipulasi melalui sistem hak akses berbasis peran (RBAC) dan validasi server-side yang ketat.
2. Arsitektur Teknologi (Technical Stack)
Aplikasi ini dibangun menggunakan kombinasi teknologi terbaru untuk menjamin performa tinggi dan keamanan.
2.1 Backend: Laravel 12 (PHP 8.3+)
API-First Design: Menggunakan Laravel sebagai penyedia layanan API (Restful API) yang diproteksi oleh Laravel Sanctum.
Database Transactional: Menggunakan DB::transaction pada setiap proses krusial (seperti Checkout dan Update Stok) untuk mencegah kegagalan data parsial.
Eloquent ORM: Relasi antar tabel diatur secara mendalam untuk mendukung pengambilan data yang kompleks (Multi-satuan, Multi-harga).
2.2 Frontend: React JS & TypeScript
State Management: Menggunakan React Hooks (useState, useMemo, useCallback) untuk pengolahan data di sisi klien yang responsif.
TypeScript: Menjamin akurasi tipe data antara Frontend dan Backend untuk meminimalisir error saat runtime.
Framer Motion: Memberikan pengalaman pengguna (UX) yang halus melalui animasi transisi antar halaman dan modal.
2.3 Desain & UI: Tailwind CSS
Utility-First: Memungkinkan kustomisasi desain yang sangat cepat dan responsif di berbagai ukuran layar (Mobile, Tablet, Desktop).
Modern Aesthetic: Menggunakan gaya desain "Glassmorphism" dan "Soft UI" dengan sudut membulat (rounded-[3rem]) yang memberikan kesan premium.
2.4 Database: MySQL 8.0+
JSON Support: Digunakan untuk menyimpan data dinamis seperti galeri foto produk dan metadata transaksi.
Composite Indexing: Mengoptimalkan pencarian data pada sistem Multi-Tenant dengan index gabungan store_id dan kolom unik lainnya.
3. Konsep Dasar Multi-Tenant
3.1 Isolasi Data Berbasis store_id
Ini adalah jantung dari Zhuzhe POS. Setiap baris data dalam database (kecuali tabel induk stores) memiliki kolom store_id.
Keamanan: Seorang Kasir di Toko A secara teknis mustahil bisa melihat nota transaksi dari Toko B karena query SQL selalu dikunci dengan WHERE store_id = X.
Kustomisasi Lokal: Toko Jakarta bisa memiliki harga jual Rp 15.000 untuk sebuah kopi, sedangkan Toko Bandung bisa menjual produk yang sama dengan harga Rp 12.000 melalui pengaturan Price Group yang berbeda.
3.2 Struktur Hierarki Pengguna
Sistem mengenal 4 tingkat otoritas:
Admin (Super Admin): Memiliki kunci master untuk masuk ke toko mana pun, mengatur branding aplikasi pusat, dan membuat toko baru.
Admin Store: Bertugas mengawasi satu atau lebih cabang tertentu (Regional Manager). Memiliki fitur "Switch Store" untuk berpindah konteks data.
Manager: Mengelola operasional harian satu toko (Master Produk, Stok, Laporan).
Cashier: Fokus penuh pada terminal penjualan (POS) dan pengelolaan pelanggan.
4. Persyaratan Sistem (System Requirements)
4.1 Server Side
PHP >= 8.2
BCMath PHP Extension (Untuk akurasi perhitungan uang)
Ctype PHP Extension
JSON PHP Extension
MySQL >= 8.0
4.2 Client Side (Perangkat Kasir)
Browser modern (Chrome, Edge, atau Safari).
Ram Minimal 4GB (Untuk kelancaran render React).
Printer Thermal POS58B (USB/Bluetooth) untuk cetak struk.
Barcode Scanner (Optional) dengan koneksi USB/HID.
Volume 2 akan membahas Detail Fitur Inventaris & Katalog Produk (Multi-Unit, Multi-Price, dan Modifiers).
Last updated