# Handover Deploy Bazzar (Softcomp)

Dokumen ini untuk deployment backend Bazzar ke server baru yang dipakai FE.

## Domain Target

- FE: `https://bazzar.softcomp.io`
- API BE: `https://apibazzar.softcomp.io`

## Tujuan

- FE tetap jalan normal di domain baru.
- API BE aktif di domain baru.
- Struktur database tetap sama dengan server sebelumnya.

## 1) Backend Source

Pastikan source backend yang dipakai adalah source final terbaru (yang sudah termasuk):

- Auth + single-device session
- Product import/export
- POS checkout/receipt/return
- Reports
- Settings (general/users/purge)

## 2) Environment Variable (Wajib)

Set minimal variabel berikut di server baru:

```env
APP_ENV=production
APP_PORT=8090

DB_HOST=127.0.0.1
DB_PORT=5432
DB_NAME=Luv2_Softcomp_bazzar
DB_USER=postgres
DB_PASSWORD=myCloud@23
DB_SCHEMA=bazzar_pos
DB_SSLMODE=disable

JWT_SECRET=your_jwt_secret
JWT_EXPIRE_MINUTES=60
REFRESH_EXPIRE_DAYS=7

ALLOWED_ORIGINS=https://bazzar.softcomp.io
```

Catatan:

- `ALLOWED_ORIGINS` harus mengizinkan FE domain baru.
- `DB_NAME` **wajib** `Luv2_Softcomp_bazzar` (sesuai guard di aplikasi).
- `DB_SCHEMA` jangan `public`, gunakan schema terisolasi (contoh: `bazzar_pos`).
- Gunakan credential DB khusus backend ini dan batasi privilege seminimal mungkin.

## 3) Database & Migration

Jalankan migration yang sama agar tabel/kolom/index identik:

```bash
make migrate-up
```

Pastikan versi migration terakhir sudah applied (termasuk tabel settings/session/return).

## 4) Build & Run Backend

```bash
make build
pm2 start ecosystem.config.js --only bazzar-be
pm2 save
```

Backend listen di port internal (default `8090`), lalu diproxy oleh Nginx.

### Pre-check sebelum start

Pastikan tidak ada bentrok port backend:

```bash
ss -ltnp | grep :8090
```

Jika sudah dipakai proses lain, ganti `APP_PORT` (misal `8091`) dan samakan di Nginx `proxy_pass`.

Pastikan `cwd` di `ecosystem.config.js` mengarah ke folder backend di server baru.

## 5) Nginx Reverse Proxy API

Domain API harus diarahkan ke backend:

- `server_name apibazzar.softcomp.io`
- proxy ke `http://127.0.0.1:8090`
- TLS/SSL aktif untuk domain API (HTTPS wajib)

Contoh blok inti:

```nginx
location / {
    proxy_pass http://127.0.0.1:8090;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}
```

Contoh aktifkan SSL cepat (jika pakai Certbot + Nginx):

```bash
sudo certbot --nginx -d apibazzar.softcomp.io
```

Validasi:

```bash
curl -I https://apibazzar.softcomp.io/api/v1/healthz
```

## 6) FE Base URL

Di project FE, set base URL API ke:

`https://apibazzar.softcomp.io`

Jangan pakai domain lama.

## 7) Smoke Test Setelah Deploy

Tes minimal ini:

1. `GET /api/v1/healthz`
2. `POST /api/v1/auth/login`
3. `GET /api/v1/settings/general` (pakai bearer token)
4. `GET /api/v1/products`
5. `GET /api/v1/reports/sales`

Jika semua sukses, FE fallback local-only tidak akan muncul lagi.

## 8) Catatan Penting

- Struktur DB akan sama selama migration yang sama dijalankan.
- Domain API boleh berubah, kontrak endpoint tetap sama.
- Jika kena `401` di settings, login ulang (single-device policy aktif).

