# Panduan Deploy — shop.warisanherbabs.com

Server: NetKL cPanel 134 · Node.js 18.20.8 · Username `bslegacy`

---

## Langkah 1 — Upload

1. cPanel → **File Manager** → masuk folder `shop.warisanherbabs.com`
2. Padam fail `.htaccess` lama kalau ada (simpan salinan dulu)
3. Upload `warisan-fasa1.zip`
4. Klik kanan → **Extract**

Struktur sepatutnya jadi:

```
/home/bslegacy/shop.warisanherbabs.com/
├── app/
├── components/
├── data/
├── lib/
├── prisma/
├── public/
├── package.json
├── server.js
└── next.config.mjs
```

## Langkah 2 — Buat database MySQL

cPanel → **MySQL Databases**

1. Create Database: `warisan`  → nama penuh jadi `bslegacy_warisan`
2. Create User: `warisan` + password kuat → `bslegacy_warisan`
3. Add User To Database → tick **ALL PRIVILEGES**

Simpan password. Kita perlukan di Langkah 3.

## Langkah 3 — Environment variables

cPanel → **Setup Node.js App** → klik pensel pada app → **ADD VARIABLE**

| Name | Value |
|---|---|
| `DATABASE_URL` | `mysql://bslegacy_warisan:PASSWORD@localhost:3306/bslegacy_warisan` |
| `NEXT_PUBLIC_SITE_URL` | `https://shop.warisanherbabs.com` |
| `NODE_ENV` | `production` |

## Langkah 4 — Install pakej

Dalam page Node.js App yang sama, tekan butang **Run NPM Install**.

Ambil masa 2–5 minit. Kalau gagal sebab memori, guna Terminal:

```bash
source /home/bslegacy/nodevenv/shop.warisanherbabs.com/18/bin/activate
cd /home/bslegacy/shop.warisanherbabs.com
npm install --omit=dev --no-audit --no-fund
```

## Langkah 5 — Build

**Cuba di server dulu** (Terminal):

```bash
source /home/bslegacy/nodevenv/shop.warisanherbabs.com/18/bin/activate
cd /home/bslegacy/shop.warisanherbabs.com
NODE_OPTIONS="--max-old-space-size=900" npm run build
```

Kalau keluar `JavaScript heap out of memory` atau proses terbunuh — server tak cukup RAM.
Gunakan cara kedua:

**Build di laptop, upload hasil:**

```bash
# di laptop
npm install
npm run build
# zip folder .next sahaja
```

Upload `.next.zip` ke folder app di server, extract. Jangan build di server lagi.

## Langkah 6 — Cipta jadual database

```bash
source /home/bslegacy/nodevenv/shop.warisanherbabs.com/18/bin/activate
cd /home/bslegacy/shop.warisanherbabs.com
npx prisma db push
```

## Langkah 7 — Restart

cPanel → Setup Node.js App → **RESTART**

Buka `https://shop.warisanherbabs.com/belalang-dewa`

---

## Fail yang perlu diganti

| Fail | Isi dengan |
|---|---|
| `public/img/produk.jpg` | Gambar produk Belalang Dewa |
| `public/img/poster-01.jpg`, `poster-02.jpg` | Gambar pegun video (frame pertama) |
| `public/video/bd-01.mp4`, `bd-02.mp4` | Video tegak 9:16. **Kalau lebih 8MB, letak di Cloudflare Stream** dan tukar `src` dalam `data/video.ts` |
| `data/video.ts` | Kapsyen dan senarai komen |
| `data/produk.ts` | Harga pakej (sementara sebelum admin siap) |
| Testimoni di halaman | Screenshot WhatsApp sebenar |
| Footer | Nombor notifikasi KKM |

## Tukar harga

Buka `data/produk.ts`, ubah nilai `harga`, build semula.
Lepas admin dashboard siap (Fasa 3), harga boleh ditukar terus dari dashboard tanpa build.

---

## Nota prestasi

Build terakhir: halaman jualan **109 KB First Load JS**, dipra-render sebagai fail statik.
Sebagai perbandingan, halaman WordPress + Elementor + CartFlows biasanya 1.5–3 MB.

Untuk kekalkan prestasi bila iklan jalan:
- Pasang **Cloudflare** (percuma) di depan domain
- Jangan host video besar di server ini — bandwidth dan CPU dikongsi 114 domain
