# Panduan Deploy SISKA (Server Database + Login)

File yang saya kirim:

```
app.html                  <- ganti file SISKA lama di hosting dengan ini
backend/
  config.php              <- WAJIB diisi kredensial database Anda
  db.php
  auth.php
  api.php
sql/
  siska_schema.sql        <- import via phpMyAdmin
```

## Langkah 1 — Buat Database MySQL di cPanel
1. Masuk cPanel → **MySQL® Databases**.
2. Buat database baru, misalnya `misalhus_siska`.
3. Buat user database baru + password, lalu **tambahkan user ke database** dengan hak **ALL PRIVILEGES**.
4. Catat: nama database, username, password (akan dipakai di `config.php`).

## Langkah 2 — Import Skema
1. Masuk cPanel → **phpMyAdmin**.
2. Pilih database yang baru dibuat.
3. Klik tab **Import**, pilih file `sql/siska_schema.sql`, lalu jalankan.
4. Ini akan membuat 2 tabel (`siska_users`, `siska_data`) dan 1 akun awal:
   - **Username:** `admin`
   - **Password:** `siska2026`
   - ⚠️ **Ganti password ini segera setelah login pertama** lewat menu *Manajemen Pengguna*.

## Langkah 3 — Upload File ke Hosting
Struktur folder di hosting (di dalam folder subdomain SISKA Anda, sama seperti lokasi `app.html` sekarang):

```
public_html/siska/ (atau subdomain SISKA Anda)
 ├── app.html
 └── api/                  <- upload isi folder "backend/" ke sini, ganti nama folder jadi "api"
     ├── config.php
     ├── db.php
     ├── auth.php
     └── api.php
```

**Penting:** folder backend saya beri nama `backend/` di paket ini, tapi di hosting **rename menjadi `api`** (atau sesuaikan, lalu ubah baris `const API_BASE = 'api';` di bagian bawah `app.html` jika Anda pakai nama folder lain).

## Langkah 4 — Isi `config.php`
Edit `api/config.php` di hosting (lewat File Manager cPanel), isi dengan kredensial dari Langkah 1:

```php
return [
    'db_host' => 'localhost',
    'db_name' => 'misalhus_siska',
    'db_user' => 'misalhus_siskauser',
    'db_pass' => 'PASSWORD_ANDA',
    'session_name' => 'siska_session',
];
```

## Langkah 5 — Uji Coba
1. Buka `app.html` di hosting.
2. Akan muncul halaman **login**. Masuk dengan `admin` / `siska2026`.
3. Setelah masuk, ganti password admin lewat menu **Manajemen Pengguna** (sidebar → Pengaturan).
4. Tambahkan akun tambahan di sana jika ada supervisor lain yang perlu akses.

## Apa yang berubah secara arsitektur
- Data yang sebelumnya hanya di `localStorage` browser sekarang **selalu disinkronkan ke database server** setiap kali Anda menyimpan/mengubah data (debounce ~0.8 detik setelah aksi terakhir).
- Local Storage tetap dipakai sebagai **cache lokal** agar aplikasi tetap terasa instan — tapi sumber data yang benar (source of truth) sekarang ada di server.
- Login **wajib** untuk semua orang yang membuka aplikasi.
- Halaman **Pengaturan Sekolah**, **Master Data**, dan **Manajemen Pengguna** hanya muncul dan bisa dibuka oleh akun berperan **Kepala Madrasah (admin)**. Server juga menolak permintaan ke fitur manajemen pengguna dari akun bukan admin (bukan cuma disembunyikan di tampilan).
- Semua akun yang login (admin maupun supervisor) tetap bisa mengisi supervisi, tindak lanjut, jadwal, dsb.

## Batasan yang perlu Anda ketahui
- Sinkronisasi memakai pola **"ganti seluruh data"** setiap kali disimpan (sama seperti perilaku Local Storage sebelumnya) — cocok untuk pemakaian 1 sekolah dengan beberapa akun, tapi **jangan gunakan 2 perangkat mengisi data yang sama secara bersamaan** karena penyimpanan terakhir yang menang (last-write-wins).
- Endpoint sinkronisasi data (`api.php?action=sync`) menerima permintaan dari **siapa pun yang sudah login**, termasuk akun supervisor (bukan hanya admin) — ini supaya supervisor tetap bisa input data. Pembatasan ke halaman admin (Pengaturan/Master Data/Pengguna) sudah diberlakukan di sisi tampilan; kalau Anda ingin membatasi lebih ketat lagi (misalnya supervisor tidak boleh mengubah data guru lain), beri tahu saya agar bisa saya tambahkan validasi per jenis data di server.
