# 📦 Setup Distribusi Telur di Rumahweb

## ⚠️ PENTING: Persyaratan Hosting

Pastikan hosting Rumahweb kamu **mendukung Node.js** (bukan hanya PHP). Cek dengan support Rumahweb apakah:
- ✅ Ada SSH access
- ✅ Ada Node.js v18+ terinstal
- ✅ Ada npm/yarn
- ✅ MySQL sudah ada (biasanya bawaan cPanel)

Jika tidak ada Node.js, minta support Rumahweb untuk mengaktifkannya.

---

## 📋 Tahap 1: Persiapan di cPanel Rumahweb

### 1.1 Buat Database MySQL

1. Login ke **cPanel** → **MySQL Databases**
2. **Buat database** dengan nama: `mana1261_telur` (sudah sesuai di `.env`)
3. **Buat user database** dengan nama: `mana1261_admintelur`, password: `admintelur`
4. **Tambahkan user ke database** dan beri **ALL PRIVILEGES**

### 1.2 Siapkan Folder untuk Aplikasi

Di cPanel, buat folder baru (via File Manager atau SSH):
```
/home/mana1261/public_html/distribusi-telur
```
atau folder lain sesuai struktur Rumahweb kamu.

---

## 🚀 Tahap 2: Deploy via SSH

### 2.1 Connect SSH

```bash
ssh mana1261@203.175.9.131
# masukkan password saat diminta
```

### 2.2 Masuk ke Folder Aplikasi

```bash
cd ~/public_html/distribusi-telur
# atau sesuai path di hosting kamu
```

### 2.3 Upload & Extract File

**Opsi A: Jika sudah ter-extract** (dari zip yang di-upload via cPanel):
```bash
# pastikan semua file sudah ada
ls -la
```

**Opsi B: Jika perlu clone dari GitHub** (lebih rapi):
```bash
cd ~/public_html
git clone https://github.com/FalahALL/distribusi-telur-new.git distribusi-telur
cd distribusi-telur
```

### 2.4 Install Dependencies

```bash
npm install
```

⏳ Ini bisa memakan waktu 3-5 menit. Tunggu sampai selesai.

### 2.5 Setup File Environment

```bash
cp .env.example .env
```

Verifikasi `.env` sudah berisi:
```
DATABASE_URL="mysql://mana1261_admintelur:admintelur@localhost:3306/mana1261_telur"
```

Jika berbeda, edit dengan:
```bash
nano .env
```

### 2.6 Jalankan Migrasi Database

```bash
npx prisma migrate dev --name init
```

✅ Tunggu sampai berhasil. Jika error, baca pesan error-nya dan pastikan MySQL sudah running.

### 2.7 Isi Data Demo (Opsional)

```bash
npm run db:seed
```

Ini mengisi data contoh:
- 5 cabang
- User demo (superadmin@telur.local, password: password123)
- Produk & harga
- Stok awal

### 2.8 Build Aplikasi

```bash
npm run build
```

⏳ Memakan waktu 1-2 menit. Tunggu sampai muncul "compiled successfully".

---

## ⚙️ Tahap 3: Jalankan Aplikasi

### Opsi A: Menggunakan PM2 (Recommended)

Jika PM2 sudah terinstall di server:

```bash
npm install -g pm2
pm2 start npm --name "distribusi-telur" -- start
pm2 startup
pm2 save
```

Aplikasi akan jalan di background dan otomatis restart saat server reboot.

Cek status:
```bash
pm2 status
pm2 logs distribusi-telur
```

### Opsi B: Menggunakan Node Langsung

```bash
npm start
```

⚠️ Aplikasi akan berhenti saat kamu close SSH. Untuk development saja.

---

## 🌐 Akses Aplikasi

Aplikasi berjalan di port **3000**. Akses lewat:
```
http://domain-kamu.com:3000
```

Atau jika ada proxy/reverse proxy di Rumahweb:
```
https://domain-kamu.com
```

### Login Demo

Email: `superadmin@telur.local`  
Password: `password123`

---

## 📝 File-File Penting

| File | Fungsi |
|------|--------|
| `.env` | Konfigurasi database & JWT secret (PRIVATE, jangan commit) |
| `prisma/schema.prisma` | Skema database MySQL |
| `package.json` | Dependencies & scripts |
| `next.config.js` | Konfigurasi Next.js |
| `src/app/api/**` | API routes (backend) |
| `src/app/login`, `src/app/admin`, dll | Frontend pages |

---

## 🐛 Troubleshooting

### Error: "Can't reach database server"

**Masalah**: MySQL tidak terkoneksi.  
**Solusi**:
1. Pastikan MySQL running: `systemctl status mysql` (jika akses root)
2. Verifikasi DATABASE_URL di `.env`
3. Test koneksi: `npx prisma db execute --stdin < check.sql` (atau tanya support)

### Error: "Port 3000 already in use"

**Masalah**: Port 3000 sudah dipakai proses lain.  
**Solusi**:
```bash
# Cari proses yang pakai port 3000
lsof -i :3000
# Atau pakai port lain (edit .env atau environment variable)
PORT=3001 npm start
```

### Build Error / Out of Memory

**Masalah**: Server kehabisan RAM saat build.  
**Solusi**:
```bash
# Kurangi memory usage saat build
NODE_OPTIONS="--max_old_space_size=1024" npm run build
```

### File `node_modules` terlalu besar

**Masalah**: Upload slow, storage penuh.  
**Solusi**:
```bash
# Hapus .next dan node_modules (akan dibuat ulang)
rm -rf .next node_modules
npm install --production
npm run build
```

---

## 🔐 Security Notes

1. **Ubah JWT_SECRET di `.env`**:
   ```bash
   openssl rand -base64 48
   # Copy hasilnya ke JWT_SECRET di .env
   ```

2. **Ubah password demo** setelah login pertama kali

3. **Jangan commit `.env`** ke GitHub (sudah di `.gitignore`)

4. **Enable HTTPS** di cPanel (SSL/TLS Wildcard atau Let's Encrypt)

---

## 📞 Bantuan

Jika ada error, capture pesan error-nya lengkap:
```bash
npm run build 2>&1 | tee error.log
cat error.log
```

Bagikan log file tersebut untuk debugging lebih lanjut.

---

**Selamat! Aplikasi Distribusi Telur siap digunakan.** 🎉
