# Panduan Deploy ke Hosting — CRM Kolektor

Aplikasi ini adalah **Node.js app murni tanpa dependensi eksternal** (tidak ada
`npm install` sama sekali). Yang dibutuhkan hosting hanyalah **Node.js versi
18 atau lebih baru**.

## Opsi A — Hosting VPS / Cloud (Rekomendasi)

Cocok untuk: VPS (DigitalOcean, Vultr, Hostinger VPS), EC2/Lightsail, VM apa
pun dengan akses SSH.

```bash
# 1. Upload file (via SCP, SFTP, atau git clone)
scp -r crm-deploy/* user@server:/var/www/crm/

# 2. Jalankan dengan PM2 (auto-restart + startup boot)
npm install -g pm2
cd /var/www/crm
pm2 start server/index.js --name crm-kolektor
pm2 save && pm2 startup

# 3. Cek
curl http://localhost:3000/
```

### Nginx reverse proxy + HTTPS (opsional tapi disarankan)

```nginx
server {
    listen 80;
    server_name crm.contohanda.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
```

Lalu sertifikat gratis: `certbot --nginx -d crm.contohanda.com`.

## Opsi B — Platform PaaS

- **Railway / Render / Fly.io**: buat service Node baru, upload folder ini,
  start command `node server/index.js`. Port otomatis diikuti dari env `PORT`
  (sudah didukung: `process.env.PORT || 3000`).
- **Catatan**: penyimpanan data berupa file JSON di `server/data/`. Di platform
  dengan filesystem ephemeral (mis. Render free), gunakan **persistent disk /
  volume**, atau data akan hilang tiap redeploy.

## Opsi C — Shared hosting cPanel dengan "Setup Node.js App"

Banyak shared hosting (Hostinger, Namecheap, Niagahoster) menyediakan menu
*Setup Node.js App*:

1. Upload isi folder ini ke folder aplikasi (mis. `crm/`).
2. cPanel → Setup Node.js App → Application root: `crm`, Startup file:
   `server/index.js`.
3. Tidak perlu install dependency apa pun — biarkan kosong.
4. Jalankan. Selesai.

## Setelah Deploy — WAJIB

1. **Ganti semua password default** (admin, hr, spv, tl, agent) lewat menu
   avatar → Ganti Password. Daftar default ada di README.
2. **Backup rutin** `server/data/crm-data.json` — seluruh data aplikasi
   (pengguna, target, OS harian, pembayaran, riwayat perpindahan tim,
   audit) ada di file ini.
3. Menjalankan ulang: cukup restart proses Node; data tersimpan otomatis ke
   file pada setiap mutasi.

## Isi Paket

```
crm-deploy/
├── client/              # frontend SPA (HTML/CSS/JS vanilla)
├── server/
│   ├── index.js         # entry point: node server/index.js
│   ├── lib/             # store, auth, perms, router, http, eff (target & insentif)
│   ├── routes/          # auth, state, users, agents, teams, payments, os, export
│   └── data/            # crm-data.json (data live) + seed.json (cadangan)
├── scripts/             # check_imports.js (verifikasi) + parse_sheet.py
├── docs/API.md          # kontrak API
├── package.json
└── README.md
```

Versi 2.2: perpindahan agent antar tim (BACK ↔ FRONT) dengan partisi
perolehan/target per TL berdasarkan tanggal efektif; insentif skema ambang —
FRONT minimum 80%, BACK minimum 50% tingkat penarikan, 100% capaian dalam
bulan penuh = Rp 1.500.000 (prorata hari kerja efektif).
