# 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

1. **Skalabilitas Bisnis:** Memudahkan ekspansi toko dari 1 cabang menjadi ratusan cabang tanpa kendala sinkronisasi data.
2. **Integritas Stok:** Menjamin keakuratan data inventaris melalui sistem Audit Trail (Mutasi Stok) yang mencatat setiap barang masuk dan keluar.
3. **Fleksibilitas Operasional:** Mendukung berbagai model bisnis mulai dari Ritel (Minimarket), F\&B (Restoran/Cafe), hingga distribusi (Toko Bangunan).
4. **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:

1. **Admin (Super Admin):** Memiliki kunci master untuk masuk ke toko mana pun, mengatur branding aplikasi pusat, dan membuat toko baru.
2. **Admin Store:** Bertugas mengawasi satu atau lebih cabang tertentu (Regional Manager). Memiliki fitur "Switch Store" untuk berpindah konteks data.
3. **Manager:** Mengelola operasional harian satu toko (Master Produk, Stok, Laporan).
4. **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).**
