# premium — Koperasi Desa Merah Putih

Subdomain: **premium.developerkdmp.my.id**.

## Stack
- Frontend: Next.js 15 + React 19 + JavaScript + Tailwind — port **3100**
- Backend: Express 4 + TypeScript + Prisma + PostgreSQL — port **4100**
- Worker: PM2 process terpisah, consume tabel `jobs` (FOR UPDATE SKIP LOCKED)
- Auth: JWT access 15m + refresh 7d (httpOnly cookie, rotated)
- File: `/home/developerkdmpmy/kopdes/` (di luar webroot, stream via backend)
- Validation: zod

## Commands
```bash
# backend
cd backend
npm run build && npx prisma migrate deploy && pm2 restart premium-backend

# frontend  
cd frontend && npm run build && pm2 restart premium-frontend

# worker
pm2 restart premium-worker
```

## DB
- Database utama: `developerkdmpmy_premium_pg`
- Shadow: `developerkdmpmy_premium_shadow`
- Buat lewat cPanel → User & Database Postgres.

## Penting
- JANGAN edit folder `/kopdes` langsung di disk — semua tulis lewat `lib/files.ts`.
- JANGAN UPDATE/DELETE row `audit_log` — append only.
- Endpoint keuangan WAJIB pakai header `Idempotency-Key` (UUID v4 dari client).
