# Catatan Skalabilitas VPS Masa Depan

Aplikasi **ERP + POS Bebek Mba Reina** dirancang menggunakan arsitektur monolit modular yang hemat sumber daya. Namun, seiring bertambahnya cabang (misal >10 outlet) dan tingginya volume transaksi kasir harian, Anda dapat dengan mudah melakukan migrasi ke VPS (Virtual Private Server) tanpa perlu merombak kode.

Berikut adalah panduan skalabilitas masa depan:

---

## 1. Migrasi Database (Dari SQLite ke MySQL 8 / PostgreSQL)

SQLite sangat tangguh untuk 1-5 cabang, tetapi untuk skalabilitas multi-user skala besar, beralih ke MySQL 8 dengan indeks relasional adalah langkah wajib.

### Langkah Migrasi:
1. **Ekspor Data Lama**: Gunakan *package* Laravel untuk mengekspor database SQLite Anda atau seeder khusus.
2. **Ubah Konfigurasi `.env` di VPS**:
   ```ini
   DB_CONNECTION=mysql
   DB_HOST=mysql-database-server-ip
   DB_PORT=3306
   DB_DATABASE=erp_reina
   DB_USERNAME=admin_reina
   DB_PASSWORD=secure_password
   ```
3. **Eksekusi Migrasi & Indeks**:
   ```bash
   php artisan migrate --force
   ```
4. Seluruh model Eloquent (seperti `Sale`, `Purchase`, `JournalEntry`) telah kami lengkapi dengan tipe UUID dan relasi terindeks untuk menjamin pencarian tetap super cepat di bawah jutaan baris data MySQL.

---

## 2. Pemanfaatan Redis untuk Caching & POS Offline-Sync

Untuk mempercepat respon katalog produk POS di aplikasi kasir:
1. **Caching Menu**: Di `POSController.php`, Anda dapat membungkus pengambilan katalog menu dengan Cache Laravel:
   ```php
   $products = Cache::remember("branch_products_{$branchId}", 3600, function() use ($branchId) {
       return Product::where('is_active', true)->get();
   });
   ```
2. Pasang **Redis** di VPS Anda dan ubah `.env`:
   ```ini
   CACHE_STORE=redis
   REDIS_HOST=127.0.0.1
   ```

---

## 3. Optimalisasi Server VPS (Nginx + PHP-FPM)

Untuk performa maksimal di VPS Linux (Ubuntu Server):
*   Gunakan **Nginx** sebagai web server menggantikan Apache.
*   Konfigurasikan **PHP 8.3-FPM** dengan `opcache` aktif demi kecepatan eksekusi PHP hingga 3x lipat lebih cepat.
*   Aktifkan **Gzip/Brotli compression** pada konfigurasi Nginx untuk mempercepat pengunduhan file Vue JS / Vite di sisi kasir.

---

## 4. Keuntungan Arsitektur Kami Saat Ini
*   **Zero Websocket Overhead**: Sistem POS melakukan sinkronisasi transaksi langsung via REST API Sanctum yang ringan. Ini menghindari beban koneksi persisten socket yang sering diblokir atau membebani CPU server.
*   **Native GD Library**: Pembuatan slip gaji PNG dikerjakan langsung di memori RAM server menggunakan ekstensi GD bawaan PHP, sehingga aman dari beban berat *Headless Chrome* (seperti Puppeteer) yang boros resource VPS.
