# Deployment Checklist

## Sebelum upload

- [ ] Hosting menggunakan PHP 8.2 atau lebih baru.
- [ ] Ekstensi `pdo_mysql`, `mbstring`, `fileinfo`, dan `openssl` aktif.
- [ ] Database MySQL dan database user khusus sudah dibuat.
- [ ] SSL untuk `lms.sangpati.id` sudah aktif.
- [ ] Document root subdomain diarahkan ke folder `public`.

## Konfigurasi

- [ ] `.env.example` disalin menjadi `.env`.
- [ ] `APP_URL=https://lms.sangpati.id`.
- [ ] `APP_ENV=production` dan `APP_DEBUG=false`.
- [ ] `APP_KEY` serta `INSTALL_KEY` berisi rahasia acak yang berbeda.
- [ ] `SESSION_SECURE=true`.
- [ ] Kredensial database sudah diuji.
- [ ] Folder `storage` dapat ditulis PHP tetapi tidak dapat diakses dari web.

Untuk membuat nilai rahasia melalui terminal:

```bash
php -r "echo bin2hex(random_bytes(32)), PHP_EOL;"
```

Jalankan dua kali dan gunakan hasil berbeda untuk `APP_KEY` dan `INSTALL_KEY`.

## Setelah instalasi

- [ ] `storage/installed.lock` sudah terbentuk.
- [ ] `APP_INSTALLED=true`.
- [ ] `INSTALL_KEY` sudah diganti.
- [ ] Akun admin dapat login dan role siswa ditolak dari modul admin.
- [ ] Pembuatan, perubahan, pencarian, ekspor CSV, serta penghapusan data sudah diuji.
- [ ] Upload dan download berkas sudah diuji.
- [ ] Pengiriman kuis dan penilaian otomatis sudah diuji.
- [ ] Backup database dan upload berhasil direstore pada lingkungan uji.
- [ ] Data contoh sudah dihapus.

## Sebelum data siswa nyata

- [ ] Uji penerimaan oleh sekolah selesai.
- [ ] Kebijakan privasi, retensi data, dan hak akses disetujui.
- [ ] Penetration test serta review konfigurasi server selesai.
- [ ] Monitoring error, kapasitas penyimpanan, dan masa berlaku SSL aktif.
