# WebGIS Pontianak v2.0
## Sistem Informasi Geografis Penduduk Miskin Kota Pontianak

---

## 📁 Struktur Proyek

```
webgis-v2/
├── index.php                   # Entry point (auto-redirect by role)
├── login.php                   # Halaman login (semua role)
├── daftar.php                  # Registrasi akun masyarakat
│
├── dashboard/
│   ├── masyarakat.php          # Dashboard: Masyarakat
│   ├── pengurus.php            # Dashboard: Pengurus Rumah Ibadah
│   └── pemerintah.php          # Dashboard: Pemerintah (read-only)
│
├── api/
│   ├── auth.php                # Login, logout, register, session
│   ├── penduduk.php            # CRUD data KK & GeoJSON
│   ├── anggota.php             # CRUD anggota keluarga & pendidikan
│   ├── rumah_ibadah.php        # CRUD rumah ibadah & GeoJSON
│   ├── laporan.php             # Laporan masyarakat & verifikasi
│   ├── bantuan.php             # Histori bantuan & statistik
│   ├── pesan.php               # Komunikasi antar rumah ibadah
│   └── notifikasi.php          # Notifikasi real-time
│
├── includes/
│   └── config.php              # DB config, helpers, session
│
├── assets/
│   ├── css/style.css           # Global stylesheet
│   ├── js/app.js               # Global JS utilities
│   └── uploads/                # Foto & dokumen upload
│
└── database_baru.sql           # Schema database lengkap
```

---

## 🚀 Cara Install

### 1. Import Database
```sql
CREATE DATABASE webgis_pontianak CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE webgis_pontianak;
-- Import file: database_baru.sql
```

### 2. Konfigurasi Database
Edit `includes/config.php`:
```php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');      // sesuaikan
define('DB_PASS', '');          // sesuaikan
define('DB_NAME', 'webgis_pontianak');
```

### 3. Buat Password Default
Jalankan script PHP ini sekali untuk update password `password123`:
```php
<?php
require 'includes/config.php';
$hash = password_hash('password123', PASSWORD_DEFAULT);
$conn->query("UPDATE users SET password_hash='$hash'");
echo "Password updated!";
?>
```

### 4. Akses Aplikasi
Buka `http://localhost/webgis-v2/` di browser.

---

## 👤 Akun Default

| Username       | Password      | Role                |
|----------------|---------------|---------------------|
| `admin`        | password123   | Admin               |
| `pengurus_mj`  | password123   | Pengurus Masjid Jami|
| `pengurus_mm`  | password123   | Pengurus Mujahidin  |
| `pengurus_gk`  | password123   | Pengurus Katedral   |
| `pemda_ptk`    | password123   | Pemerintah          |
| `ahmad_yusuf`  | password123   | Masyarakat          |

---

## 🔑 Fitur Per Role

### 👤 Masyarakat
- Login / Daftar akun mandiri
- Lihat peta sebaran penduduk
- **Kirim laporan:** kelahiran, kematian, pindah, dll
- Lihat data keluarga & anggota (dengan umur otomatis dari tanggal lahir)
- Lihat riwayat pendidikan anggota keluarga
- Lihat histori bantuan yang diterima keluarga
- Terima notifikasi real-time

### 🕌 Pengurus Rumah Ibadah
- Semua fitur di atas, plus:
- **Manajemen penduduk binaan:** tambah, edit, hapus KK
- **Manajemen anggota keluarga** beserta riwayat pendidikan
- **Verifikasi laporan** masyarakat → otomatis update status anggota
- **Catat bantuan:** detail lengkap dengan kondisi, foto, nominal
- Histori bantuan dengan **rumah ibadah mitra**
- **Kirim/terima pesan** antar rumah ibadah
- Tambah rumah ibadah baru ke sistem
- Notifikasi auto saat laporan masuk ke wilayah binaan

### 🏛️ Pemerintah (Read-only)
- Dashboard analytics lengkap dengan Chart.js
- KPI: total KK, jiwa, sangat miskin, miskin, bantuan, ibadah
- **Grafik:** distribusi per kecamatan, status ekonomi, bantuan per jenis, kontribusi ibadah, status laporan
- Peta GIS interaktif dengan filter
- Tabel penduduk lengkap + **export CSV**
- Transparansi penyaluran bantuan
- Monitoring laporan masyarakat

---

## 🗺️ Fitur GIS

- **Peta Leaflet** dengan tile OpenStreetMap
- Marker per penduduk (warna berbeda per status ekonomi)
- Marker per rumah ibadah (ikon sesuai jenis)
- **Radius layanan** tiap rumah ibadah (lingkaran)
- **Auto-assign:** laporan masyarakat otomatis diteruskan ke rumah ibadah yang radius-nya mencakup lokasi KK
- **Haversine:** jarak KK ke rumah ibadah terdekat dihitung otomatis saat input

---

## 📡 API Endpoints

```
GET  api/auth.php?action=stats          → Statistik publik (login page)
POST api/auth.php                       → Login
POST api/auth.php?action=register       → Register masyarakat
GET  api/auth.php?action=logout         → Logout

GET  api/penduduk.php?action=geojson    → GeoJSON semua penduduk
GET  api/penduduk.php?action=dashboard  → Statistik dashboard
POST api/penduduk.php                   → Tambah KK (multipart)
PUT  api/penduduk.php                   → Update KK

GET  api/anggota.php?action=list&id_penduduk=X  → List anggota KK
POST api/anggota.php                    → Tambah anggota
PUT  api/anggota.php                    → Update/ubah status hidup

GET  api/rumah_ibadah.php?action=geojson → GeoJSON ibadah
GET  api/rumah_ibadah.php?action=list    → List ibadah (dropdown)
POST api/rumah_ibadah.php               → Tambah ibadah

GET  api/laporan.php?action=list        → List laporan (filter wilayah auto)
POST api/laporan.php?action=kirim       → Kirim laporan (masyarakat)
PUT  api/laporan.php?action=verifikasi  → Verifikasi laporan (pengurus)

GET  api/bantuan.php?action=list        → Histori bantuan
GET  api/bantuan.php?action=statistik   → Statistik bantuan
POST api/bantuan.php                    → Catat bantuan baru
PUT  api/bantuan.php                    → Update bantuan

GET  api/pesan.php?action=inbox         → Pesan masuk (pengurus)
GET  api/pesan.php?action=outbox        → Pesan terkirim
POST api/pesan.php                      → Kirim pesan antar ibadah
PUT  api/pesan.php?action=inbox         → Balas pesan

GET  api/notifikasi.php                 → Semua notifikasi user
PUT  api/notifikasi.php                 → Tandai baca
```

---

## 🔧 Kebutuhan Server
- PHP 7.4+ dengan ekstensi `mysqli`, `session`
- MySQL / MariaDB 5.7+
- Apache/Nginx dengan `mod_rewrite`
- PHP `fileinfo` untuk upload gambar

---

## 📦 Dependensi Eksternal (CDN — tidak perlu install)
- Leaflet.js 1.9.4 (peta interaktif)
- Chart.js 4.4.0 (grafik dashboard pemerintah)
- Google Fonts: Sora

---

*WebGIS Pontianak v2.0 — Sistem Terintegrasi Penanggulangan Kemiskinan*
