# Panduan Deployment ke Namecheap cPanel (Node.js)

Aplikasi ini adalah **Node.js Application** yang menggunakan React (Frontend) dan Express (Backend).

## Struktur Folder Deployment
- `app.js`: Entry point untuk cPanel Node.js App.
- `server/`: Backend logic (API, Database).
- `public/`: Frontend static files (HTML, CSS, JS built from React).
- `package.json`: Dependencies.
- `.env`: Konfigurasi environment (Database, API Keys).

---

## Langkah 1: Akses cPanel
1. Login ke akaun Namecheap anda.
2. Pergi ke **Hosting List** -> **Go to cPanel**.

## Langkah 2: Setup Node.js App
1. Di dalam cPanel, cari bahagian **Software** dan klik **Setup Node.js App**.
2. Klik **Create Application**.
3. **Node.js Version**: Pilih versi yang sesuai (Recommended: 18.x atau 20.x).
4. **Application Mode**: `Production`.
5. **Application Root**: Masukkan path folder di mana anda akan upload file.
   - Contoh: `app.rayagen.pics`
6. **Application URL**: Pilih domain anda (`app.rayagen.pics`).
7. **Application startup file**: Masukkan `app.js`.
8. Klik **Create**.

## Langkah 3: Upload File
1. Buka **File Manager** di cPanel.
2. Masuk ke folder yang baru dicipta (cth: `/home/neurotgm/app.rayagen.pics`).
   - *Nota: cPanel mungkin mencipta folder ini secara automatik.*
3. **Padam** sebarang file default yang mungkin ada (kecuali folder `node_modules` jika ada).
4. **Upload** kesemua isi kandungan folder `deployment` ini ke dalam folder tersebut.
   - Anda boleh zip folder `deployment` ini, upload, dan extract di sana.
5. Struktur akhir di File Manager sepatutnya kelihatan seperti ini:
   - `/home/neurotgm/app.rayagen.pics/app.js`
   - `/home/neurotgm/app.rayagen.pics/server/...`
   - `/home/neurotgm/app.rayagen.pics/public/...`
   - `/home/neurotgm/app.rayagen.pics/package.json`
   - `/home/neurotgm/app.rayagen.pics/.env`

## Langkah 4: Install Dependencies
1. Kembali ke halaman **Setup Node.js App** di cPanel.
2. Di bahagian bawah, anda akan lihat butang **Run NPM Install**.
3. Klik butang tersebut dan tunggu sehingga selesai.
   - *Jika gagal, pastikan `package.json` telah diupload dengan betul.*

## Langkah 5: Konfigurasi Environment (.env)
1. Edit file `.env` di File Manager.
2. Pastikan setting berikut betul:
   ```
   PORT=3001  # cPanel akan override ini, tapi biarkan standard
   NODE_ENV=production
   JWT_SECRET=tukar-kepada-rahsia-anda
   # Database (SQLite file akan dicipta automatik jika tiada)
   ```
3. **PENTING**: Database SQLite (`database.sqlite`) akan dicipta secara automatik di root aplikasi (`/home/neurotgm/app.rayagen.pics/database.sqlite`) apabila server bermula.
   - Pastikan folder root mempunyai permission write (biasanya 755 sudah memadai).

## Langkah 6: Restart App
1. Di halaman **Setup Node.js App**, klik **Restart Application**.

## Langkah 7: Testing
1. Buka browser dan layari `https://app.rayagen.pics`.
2. Anda sepatutnya melihat laman web RayaGen.
3. Cuba fungsi Login/Register untuk memastikan API dan Database berfungsi.

## Troubleshooting
- **500 Internal Server Error / App Crash**:
  - Semak **stderr.log** di dalam folder aplikasi untuk melihat error log.
- **Frontend 404**:
  - Pastikan folder `public` wujud dan mengandungi `index.html`.
  - Pastikan `server/index.cjs` mempunyai baris `app.use(express.static(...))`.
- **Database Error**:
  - Pastikan permission folder membenarkan Node.js mencipta file `database.sqlite`.

---
Generated by Trae AI
