186 lines
6.1 KiB
Markdown
186 lines
6.1 KiB
Markdown
# WebGIS Pengentasan Kemiskinan v2.0
|
||
### Berbasis Masyarakat & Rumah Ibadah
|
||
|
||
> Pengembangan dari sistem webgis-spbu menjadi sistem manajemen sosial yang lengkap, real-time, dan berbasis relasi database.
|
||
|
||
---
|
||
|
||
## 🚀 Fitur Lengkap
|
||
|
||
| Fitur | Status |
|
||
|---|---|
|
||
| Peta Leaflet interaktif + MarkerCluster | ✅ |
|
||
| Layer: penduduk, keluarga, rumah ibadah, laporan, jalan | ✅ |
|
||
| Warna marker berdasar status ekonomi (merah/kuning/hijau) | ✅ |
|
||
| CRUD penduduk lengkap (NIK, umur otomatis, kesehatan, dll) | ✅ |
|
||
| Sistem keluarga (KK → anggota) | ✅ |
|
||
| Validasi logika pendidikan vs umur | ✅ |
|
||
| Laporan masyarakat (siapapun bisa lapor, tanpa login) | ✅ |
|
||
| Manajemen bantuan + histori per penduduk | ✅ |
|
||
| Deteksi otomatis warga belum pernah dibantu | ✅ |
|
||
| Prioritas bantuan (KRITIS = miskin + sakit parah) | ✅ |
|
||
| Multi-role: admin, pengurus, pimpinan, masyarakat | ✅ |
|
||
| Chat/diskusi antar pengurus per rumah ibadah | ✅ |
|
||
| Notifikasi real-time (polling) | ✅ |
|
||
| Audit log semua aktivitas | ✅ |
|
||
| Dashboard monitoring statistik | ✅ |
|
||
| Data dummy siap pakai (Pontianak) | ✅ |
|
||
|
||
---
|
||
|
||
## 📁 Struktur Direktori
|
||
|
||
```
|
||
webgis-kemiskinan/
|
||
├── index.html ← Peta WebGIS utama (publik)
|
||
├── admin/
|
||
│ ├── login.php ← Halaman login
|
||
│ ├── logout.php
|
||
│ ├── init_admin.php ← Inisialisasi user (jalankan sekali!)
|
||
│ ├── _layout.php ← Layout admin (header + nav)
|
||
│ ├── index.php ← Dashboard
|
||
│ ├── penduduk.php ← CRUD penduduk
|
||
│ ├── bantuan.php ← Catat penyaluran bantuan
|
||
│ ├── histori_bantuan.php ← Riwayat bantuan
|
||
│ ├── belum_dibantu.php ← Warga belum tersentuh bantuan
|
||
│ ├── laporan.php ← Manajemen laporan masyarakat
|
||
│ └── log.php ← Audit log (admin only)
|
||
├── php/
|
||
│ ├── koneksi.php ← Config DB + helper functions
|
||
│ ├── middleware/
|
||
│ │ └── auth.php ← Autentikasi & otorisasi
|
||
│ └── api/
|
||
│ ├── auth.php ← Login/logout API
|
||
│ ├── penduduk.php ← CRUD penduduk (RESTful)
|
||
│ ├── keluarga.php ← CRUD keluarga
|
||
│ ├── bantuan.php ← Bantuan + histori + stats
|
||
│ ├── laporan.php ← Laporan masyarakat
|
||
│ ├── rumah_ibadah.php ← CRUD rumah ibadah
|
||
│ └── pesan.php ← Chat + notifikasi
|
||
├── sql/
|
||
│ └── schema.sql ← Schema + data dummy
|
||
└── uploads/
|
||
├── bukti/ ← Bukti penyaluran bantuan
|
||
└── foto_laporan/ ← Foto dari laporan masyarakat
|
||
```
|
||
|
||
---
|
||
|
||
## ⚙️ Instalasi (XAMPP)
|
||
|
||
### 1. Salin Folder
|
||
```
|
||
C:\xampp\htdocs\webgis-kemiskinan\
|
||
```
|
||
|
||
### 2. Buat Database
|
||
- Buka **phpMyAdmin** → `http://localhost/phpmyadmin`
|
||
- Buat database baru: `webgis_kemiskinan`
|
||
- Import: `sql/schema.sql`
|
||
|
||
### 3. Konfigurasi DB
|
||
Edit `php/koneksi.php`:
|
||
```php
|
||
define('DB_NAME', 'webgis_kemiskinan');
|
||
define('DB_USER', 'root');
|
||
define('DB_PASS', ''); // sesuaikan password MySQL Anda
|
||
```
|
||
|
||
### 4. Inisialisasi User
|
||
Buka sekali di browser:
|
||
```
|
||
http://localhost/webgis-kemiskinan/admin/init_admin.php
|
||
```
|
||
> **Hapus file ini setelah dijalankan!**
|
||
|
||
### 5. Akses Sistem
|
||
| URL | Keterangan |
|
||
|---|---|
|
||
| `http://localhost/webgis-kemiskinan/` | Peta WebGIS (publik) |
|
||
| `http://localhost/webgis-kemiskinan/admin/login.php` | Panel Admin |
|
||
|
||
---
|
||
|
||
## 👤 Akun Demo
|
||
|
||
| Username | Password | Role |
|
||
|---|---|---|
|
||
| `admin` | `password` | Administrator |
|
||
| `pengurus1` | `password` | Pengurus Masjid Al-Falah |
|
||
| `pimpinan1` | `password` | Pimpinan Daerah |
|
||
| `warga1` | `password` | Masyarakat |
|
||
|
||
> Hash yang digunakan adalah hash Laravel default untuk string `"password"`.
|
||
> Untuk produksi, ganti dengan: `password_hash('PasswordBaru', PASSWORD_BCRYPT)`
|
||
|
||
---
|
||
|
||
## 🗄️ Tabel Database
|
||
|
||
| Tabel | Fungsi |
|
||
|---|---|
|
||
| `roles` | Definisi role sistem |
|
||
| `users` | Akun pengguna |
|
||
| `rumah_ibadah` | Data rumah ibadah + radius |
|
||
| `keluarga` | Data KK |
|
||
| `penduduk` | Data individu (NIK sebagai PK) |
|
||
| `riwayat_pelatihan` | Pelatihan kerja per penduduk |
|
||
| `jenis_bantuan` | Master jenis bantuan |
|
||
| `histori_bantuan` | Riwayat penyaluran bantuan |
|
||
| `laporan` | Laporan kondisi dari masyarakat |
|
||
| `pesan` | Chat antar pengurus |
|
||
| `notifikasi` | Notifikasi per user |
|
||
| `log_aktivitas` | Audit trail semua perubahan data |
|
||
| `jalan_lines` | Layer jalan (GeoJSON) |
|
||
| `parsil_tanah` | Layer parsil tanah (GeoJSON) |
|
||
|
||
---
|
||
|
||
## 🧠 Logika Khusus
|
||
|
||
### Validasi Pendidikan vs Umur
|
||
- Umur 7–12 tahun → wajib masih sekolah (SD)
|
||
- Umur 13–15 tahun → wajib masih sekolah (SMP)
|
||
- Umur 16–18 tahun → wajib masih sekolah (SMA/SMK)
|
||
- Umur >18 tahun → bebas (bisa tidak sekolah / ikut pelatihan)
|
||
|
||
### Prioritas Bantuan (otomatis)
|
||
| Kondisi | Prioritas |
|
||
|---|---|
|
||
| Miskin + Sakit Parah/Disabilitas | 🔴 KRITIS |
|
||
| Miskin + Belum pernah dibantu | 🟠 TINGGI |
|
||
| Miskin (umum) | 🟡 SEDANG |
|
||
| Rentan + Sakit | 🟡 SEDANG |
|
||
| Lainnya | 🟢 RENDAH |
|
||
|
||
### Umur Otomatis
|
||
Kolom `umur` di tabel `penduduk` adalah **GENERATED COLUMN** — dihitung langsung dari `tanggal_lahir` setiap kali data dibaca. Tidak perlu update manual.
|
||
|
||
---
|
||
|
||
## 🔒 Keamanan
|
||
- PDO dengan prepared statements (anti SQL injection)
|
||
- `password_hash()` / `password_verify()` untuk password
|
||
- Session dengan `session_regenerate_id()` saat login
|
||
- Validasi input di sisi server untuk semua endpoint
|
||
- Otorisasi per-role di setiap API endpoint
|
||
- Upload file: validasi ekstensi + ukuran + nama acak
|
||
|
||
---
|
||
|
||
## 📱 Cara Buat Laporan (Masyarakat)
|
||
1. Buka `http://localhost/webgis-kemiskinan/`
|
||
2. Klik tombol **"Buat Laporan"** di pojok kanan atas
|
||
3. Isi deskripsi kondisi (nama pelapor opsional)
|
||
4. Klik peta untuk memilih lokasi otomatis
|
||
5. Kirim → pengurus akan mendapat notifikasi otomatis
|
||
|
||
---
|
||
|
||
## 🔄 Pengembangan Lanjutan (Saran)
|
||
- [ ] Integrasi SMS/WhatsApp notifikasi
|
||
- [ ] Export PDF laporan distribusi bantuan
|
||
- [ ] Login via Google / warga menggunakan NIK + tanggal lahir
|
||
- [ ] Mobile app (React Native / Flutter)
|
||
- [ ] Sinkronisasi data dengan Dukcapil
|