# Panduan Deployment cPanel & Shared Hosting

Dokumen ini menjelaskan langkah-langkah detail untuk merilis aplikasi **ERP + POS Bebek Mba Reina** ke lingkungan *Shared Hosting* atau cPanel secara aman, ringan, dan 105% berfungsi.

---

## 1. Persiapan File Produksi (Lokal)

Sebelum mengunggah proyek ke cPanel, Anda wajib mengompilasi aset front-end (Vue 3 & Tailwind CSS) di komputer lokal Anda:

```bash
# Jalankan kompilasi Vite produksi
npm run build
```

Setelah selesai, folder `public/build` akan terisi file-file yang telah di-minified dan siap saji.

---

## 2. Struktur Direktori cPanel (Strategi Folder Aman)

Sangat dilarang meletakkan seluruh folder proyek Laravel langsung di dalam `public_html` karena file konfigurasi sensitif seperti `.env` akan terekspos ke publik!

Gunakan struktur berikut di File Manager cPanel Anda:

```text
/home/username/
├── erp-bebekmbareina-core/      <-- Seluruh file proyek Laravel (Kecuali folder public)
└── public_html/                 <-- Isi dari folder "public" Laravel Anda
```

### Langkah Eksport:
1. **Compress Core**: Kompres seluruh file proyek Anda (kecuali folder `public`, `.git`, `node_modules`, dan `storage/framework/cache`) menjadi file `core.zip`.
2. **Compress Public**: Masuk ke folder `public/` lokal Anda, pilih semua file di dalamnya, lalu kompres menjadi `public.zip`.

---

## 3. Unggah & Ekstrak di cPanel File Manager

1. Masuk ke **cPanel > File Manager**.
2. Unggah `core.zip` ke direktori luar public_html (misal di `/home/username/erp-bebekmbareina-core/`) lalu **Extract**.
3. Unggah `public.zip` ke dalam direktori `/home/username/public_html/` lalu **Extract**.

---

## 4. Konfigurasi `index.php` di `public_html`

Agar cPanel dapat menemukan file core Laravel Anda, edit file `/home/username/public_html/index.php` yang baru saja Anda ekstrak:

### Cari baris:
```php
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
```

### Ubah menjadi:
```php
require __DIR__.'/../erp-bebekmbareina-core/vendor/autoload.php';
$app = require_once __DIR__.'/../erp-bebekmbareina-core/bootstrap/app.php';
```

---

## 5. Membuat Symlink Storage di Shared Hosting

Laravel menyimpan gambar (termasuk slip gaji PNG yang dihasilkan) di `storage/app/public`. Di lokal, kita menggunakan `php artisan storage:link`. Di shared hosting, Anda bisa membuat symlink menggunakan file PHP sederhana!

Buat file bernama `symlink.php` di `/home/username/public_html/` berisi:

```php
<?php
symlink('/home/username/erp-bebekmbareina-core/storage/app/public', '/home/username/public_html/storage');
echo "Symlink sukses dibuat!";
```

Akses `domainanda.com/symlink.php` di browser sekali saja, lalu **HAPUS** file tersebut demi alasan keamanan.

---

## 6. Konfigurasi `.env` Produksi

Salin file `.env.example` menjadi `.env` di dalam folder `/home/username/erp-bebekmbareina-core/` lalu sesuaikan konfigurasinya:

```ini
APP_NAME="Bebek Mba Reina ERP"
APP_ENV=production
APP_DEBUG=false
APP_URL=https://domainanda.com

# Database (Jika menggunakan SQLite di Shared Hosting)
DB_CONNECTION=sqlite
DB_DATABASE=/home/username/erp-bebekmbareina-core/database/database.sqlite

# Jika pindah ke MySQL cPanel
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=nama_db_anda
# DB_USERNAME=nama_user_db
# DB_PASSWORD=password_db_anda
```

> [!IMPORTANT]
> Pastikan hak akses untuk file `database.sqlite` di cPanel disetel ke `0664` dan folder `database/` disetel ke `0775` agar Laravel dapat membaca dan menulis data transaksi penjualan kasir!
