# Panduan Deploy Dadofy di cPanel Hosting (Node.js Support)

Panduan ini menjelaskan langkah demi langkah untuk mendeploy aplikasi Dadofy (Node.js Express) di cPanel hosting yang sudah mendukung aplikasi Node.js (menggunakan **Setup Node.js App** dari CloudLinux).

---

## Prasyarat Sebelum Deploy
1. **cPanel Hosting** dengan fitur **Setup Node.js App** (biasanya menggunakan *CloudLinux Passenger*).
2. Akses ke database **MySQL** di cPanel.
3. File database [dadofy.sql](file:///c:/Users/black/Downloads/dadofy/database/dadofy.sql) untuk di-import.

---

## Langkah 1: Persiapan File Project (Kompresi Zip)
Sebelum mengunggah, kompres file project Anda menjadi format `.zip`. 
> [!IMPORTANT]
> **JANGAN** sertakan folder `node_modules` atau file `.env` lokal Anda ke dalam zip agar ukuran file lebih kecil dan tidak terjadi konflik sistem.

File & Folder utama yang wajib masuk zip:
- `controllers/`
- `routes/`
- `views/`
- `config/`
- `middlewares/`
- `public/`
- `database/`
- `app.js`
- `package.json`

---

## Langkah 2: Buat Database MySQL di cPanel
1. Masuk ke cPanel, cari menu **MySQL® Database Wizard**.
2. **Buat Database Baru** (contoh: `namamember_dadofy`).
3. **Buat User Database Baru** dan buat password yang kuat. Catat nama database, user, dan password ini.
4. Hubungkan User ke Database dengan mencentang **ALL PRIVILEGES**.
5. Masuk ke menu **phpMyAdmin** di cPanel, pilih database yang baru dibuat, lalu klik tab **Import**. Pilih file `database/dadofy.sql` dari komputer Anda dan klik **Go** untuk meng-import skema database.

---

## Langkah 3: Konfigurasi Node.js App di cPanel
1. Di cPanel, cari dan buka menu **Setup Node.js App** (di bawah kategori *Software*).
2. Klik tombol **Create Application**.
3. Isi konfigurasi berikut:
   - **Node.js version**: Pilih versi terbaru yang stabil (direkomendasikan **18.x** atau **20.x**).
   - **Application mode**: Pilih **Production**.
   - **Application root**: Isi nama folder tempat menyimpan file project (contoh: `dadofy`). Folder ini akan otomatis dibuat di direktori utama `/home/username/dadofy`.
   - **Application URL**: Pilih domain atau subdomain Anda.
   - **Application startup file**: Isi dengan **`app.js`**.
4. Klik **Create** di pojok kanan atas. Setelah dibuat, cPanel akan menghasilkan file template `app.js` bawaan default.

---

## Langkah 4: Unggah File Project Anda
1. Masuk ke cPanel **File Manager**.
2. Arahkan ke folder *Application Root* yang dibuat pada Langkah 3 (misalnya: `/home/username/dadofy`).
3. Hapus file `app.js` bawaan cPanel yang otomatis terbuat.
4. Klik **Upload**, lalu unggah file `.zip` project Anda yang sudah dipersiapkan di Langkah 1.
5. Setelah selesai diunggah, klik kanan pada file zip tersebut di File Manager, pilih **Extract** untuk mengekstrak seluruh folder dan file project ke dalam direktori aplikasi root.

---

## Langkah 5: Buat File `.env` di Server cPanel
1. Di dalam folder root aplikasi Anda (`/home/username/dadofy`), klik tombol **+ File** di pojok kiri atas File Manager.
2. Buat file baru dengan nama **`.env`**.
3. Klik kanan file `.env` tersebut, pilih **Edit**, lalu masukkan konfigurasi production berikut (sesuaikan nilainya):

```env
APP_NAME=Dadofy
APP_URL=https://domainanda.com
APP_PORT=3000
NODE_ENV=production

# Database MySQL cPanel Anda
DB_HOST=127.0.0.1
DB_USER=namamember_userdb
DB_PASSWORD=PasswordDatabaseAnda123
DB_NAME=namamember_namadb

# Session & Security (Gunakan string acak panjang untuk keamanan)
SESSION_SECRET=gantidenganstringpanjangdanacak1283719283
CSRF_SECRET=gantidenganstringpanjangdanacak1283719283

# SMTP Email Verification Settings
SMTP_HOST=mail.domainanda.com
SMTP_PORT=465
SMTP_USER=verification@domainanda.com
SMTP_PASS=PasswordEmailVerificationAnda
SMTP_FROM=verification@domainanda.com

# Google OAuth (Opsional, kosongkan jika tidak digunakan)
# GOOGLE_CLIENT_ID=
# GOOGLE_CLIENT_SECRET=
# GOOGLE_CALLBACK_URL=https://domainanda.com/auth/google/callback
```
4. Klik **Save Changes**.

---

## Langkah 6: Install Dependencies (npm install)
1. Kembali ke halaman cPanel **Setup Node.js App**.
2. Klik tombol **Edit** (ikon pensil) pada aplikasi Node.js yang sudah Anda buat tadi.
3. Di bagian bawah, cPanel akan mendeteksi file `package.json` yang baru di-upload.
4. Klik tombol **Run NPM Install**. Proses ini akan mendownload semua pustaka library seperti `express`, `bcryptjs`, `passport`, dan `nodemailer` langsung di server hosting. Tunggu hingga proses instalasi selesai.
5. Setelah selesai, klik tombol **Restart Application** di bagian atas untuk memuat ulang aplikasi dengan konfigurasi `.env` dan folder `node_modules` yang baru.

---

## Langkah 7: Pengaturan `.htaccess` (Opsional / Otomatis)
Secara default, Passenger (engine cPanel Node.js) akan membuat file `.htaccess` di folder domain/subdomain Anda (misalnya `/public_html`) untuk mengarahkan trafik web ke port aplikasi Node.js Anda.

Jika web Anda menampilkan error `503 Service Unavailable` atau list folder, pastikan file `.htaccess` di folder domain utama berisi kode penyeimbang Passenger berikut:
```apache
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGIN
PassengerAppRoot "/home/username/dadofy"
PassengerBaseURI "/"
PassengerAppType node
PassengerStartupFile app.js
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION END
```

---

## 🎉 Deploy Selesai!
Aplikasi Anda sekarang aktif secara online di domain Anda. Anda dapat membuka domain tersebut di browser dan mencoba alur registrasi klien, pemesanan jasa, upload bukti transfer, maupun membalas tiket support sebagai admin.
