# Panduan Deployment Server Kantor

## Rekomendasi

Gunakan Linux server, Node.js 22.13+, reverse proxy HTTPS, domain internal/eksternal,
serta backup harian. Untuk penggunaan bersama, database wajib diaktifkan. Deployment
Cloudflare Worker + D1 adalah konfigurasi yang paling sesuai dengan source ini.

## Tahapan minimum

1. Ekstrak paket source ke direktori aplikasi.
2. Salin `.env.example` menjadi `.env` dan isi hanya variabel yang benar-benar digunakan.
3. Jalankan `npm ci`.
4. Jalankan `npm test`; jangan lanjut bila pengujian gagal.
5. Aktifkan binding database `DB` pada environment produksi.
6. Jalankan build dan deployment sesuai platform.
7. Uji login/akses, penyimpanan proyek, impor-ekspor JSON, seluruh menu Bab I–XII,
   ekspor laporan, CSV, dan SVG.
8. Atur backup database, retensi, monitoring error, dan change management.

## Security checklist

- HTTPS aktif dan sertifikat valid.
- Akses dibatasi kepada engineer/PIC yang ditetapkan.
- Password/SSO, role dan termination access dikelola administrator.
- Database tidak dapat diakses langsung dari internet.
- Backup terenkripsi diuji pemulihannya secara berkala.
- File proyek tidak memuat kredensial, API key atau data pribadi yang tidak diperlukan.
- Log perubahan dan revisi dokumen dipertahankan sesuai prosedur perusahaan.

## Acceptance test sebelum go-live

| Pengujian | Kriteria lulus |
|---|---|
| Build aplikasi | Selesai tanpa error |
| Bab I–XII | Seluruh menu dan subworkspace terbuka |
| Calculation | Perubahan input mengubah hasil dan status secara konsisten |
| Penyimpanan | Data tetap tersedia setelah refresh dan lintas sesi sesuai mode server |
| Ekspor/impor | JSON dapat dipulihkan; CSV/HTML/SVG dapat dibuka |
| Laporan | Identitas, revisi, narasi, hasil, acuan dan pengesahan tampil |
| Responsif | Desktop, tablet dan ponsel dapat digunakan |
| QA/QC | HOLD tidak dapat ditafsirkan sebagai approval final |

## Catatan platform

Perintah `npm run start` menjalankan hasil build Vinext. Binding D1 bersifat
Cloudflare-compatible. Bila kantor wajib memakai PostgreSQL/MySQL atau server
on-premise tanpa Cloudflare, adapter database dan autentikasi perlu dikembangkan
sebelum data dapat dibagi antarpengguna; antarmuka kalkulator tetap dapat berjalan
dengan penyimpanan browser dan ekspor paket proyek.
