185 lines
6.6 KiB
Markdown
185 lines
6.6 KiB
Markdown
# WebGIS Pengentasan Kemiskinan v3.0
|
||
## Kota Pontianak — Berbasis Komunitas & Rumah Ibadah
|
||
|
||
Sistem WebGIS berbasis PHP + MySQL + Leaflet.js untuk pemetaan, pendataan, dan distribusi bantuan sosial kepada penduduk miskin di Kota Pontianak.
|
||
|
||
---
|
||
|
||
## 📁 Struktur Folder
|
||
|
||
```
|
||
webgis_v3/
|
||
├── index.php ← Halaman utama (SPA: login + semua fitur)
|
||
├── config.php ← Konfigurasi database & helper functions
|
||
├── database.sql ← Skema database + data demo
|
||
├── .htaccess ← Konfigurasi Apache (keamanan + routing)
|
||
├── uploads/ ← Foto laporan masyarakat
|
||
└── api/
|
||
├── auth.php ← Login / logout / cek sesi
|
||
├── penduduk.php ← CRUD data penduduk + validasi pendidikan
|
||
├── keluarga.php ← CRUD data keluarga (KK)
|
||
├── rumah_ibadah.php ← CRUD rumah ibadah
|
||
├── bantuan.php ← Master bantuan + histori + prioritas otomatis
|
||
├── laporan.php ← Laporan masyarakat + upload foto
|
||
├── chat.php ← Chat antar pengurus
|
||
├── stats.php ← Dashboard KPI + GeoJSON untuk peta
|
||
├── pelatihan.php ← Manajemen pelatihan keterampilan
|
||
├── user.php ← Manajemen user & role (superadmin)
|
||
└── log.php ← Log aktivitas sistem
|
||
```
|
||
|
||
---
|
||
|
||
## 🚀 Cara Menjalankan di XAMPP
|
||
|
||
### Langkah 1 — Ekstrak & Taruh di htdocs
|
||
```
|
||
Ekstrak ZIP → salin folder webgis_v3 ke:
|
||
C:\xampp\htdocs\webgis_v3\
|
||
```
|
||
|
||
### Langkah 2 — Start XAMPP
|
||
Buka XAMPP Control Panel → Start **Apache** dan **MySQL**
|
||
|
||
### Langkah 3 — Import Database
|
||
1. Buka browser → `http://localhost/phpmyadmin`
|
||
2. Klik tab **SQL** di bagian atas
|
||
3. Salin seluruh isi file `database.sql`
|
||
4. Tempel ke kotak SQL → klik **Go**
|
||
|
||
Database `webgis_kemiskinan` akan terbuat otomatis dengan semua tabel dan data demo.
|
||
|
||
### Langkah 4 — Cek config.php (jika perlu)
|
||
```php
|
||
define('DB_HOST', 'localhost');
|
||
define('DB_USER', 'root'); // default XAMPP
|
||
define('DB_PASS', ''); // default XAMPP = kosong
|
||
define('DB_NAME', 'webgis_kemiskinan');
|
||
```
|
||
|
||
### Langkah 5 — Buka Aplikasi
|
||
```
|
||
http://localhost/webgis_v3
|
||
```
|
||
|
||
---
|
||
|
||
## 👥 Akun Demo
|
||
|
||
| Role | Username | Password | Akses |
|
||
|------|----------|----------|-------|
|
||
| 👑 Super Admin | `superadmin` | `password` | Semua fitur + manajemen user |
|
||
| 🏛️ Pimpinan | `pimpinan1` | `password` | Dashboard monitoring (read-only) |
|
||
| 🕌 Pengurus RI | `pengurus1` | `password` | Input data + distribusi bantuan |
|
||
| 🕌 Pengurus RI | `pengurus2` | `password` | Input data + distribusi bantuan |
|
||
| 🚑 Relawan | `relawan1` | `password` | Survey lapangan + laporan |
|
||
| 👤 Masyarakat | `masyarakat1` | `password` | Lihat peta + buat laporan |
|
||
|
||
> Laporan masyarakat bisa dikirim **tanpa login** (klik chip "Lapor Tanpa Login" di halaman login).
|
||
|
||
---
|
||
|
||
## 🗄️ Struktur Database (13 Tabel)
|
||
|
||
| Tabel | Deskripsi |
|
||
|-------|-----------|
|
||
| `role` | 5 role sistem |
|
||
| `user` | Akun pengguna + relasi ke role & rumah ibadah |
|
||
| `rumah_ibadah` | Data masjid, gereja, vihara, klenteng, pura |
|
||
| `keluarga` | Data Kartu Keluarga (KK) |
|
||
| `penduduk` | Data penduduk lengkap (NIK, umur otomatis, profil umur) |
|
||
| `pelatihan` | Program pelatihan keterampilan |
|
||
| `riwayat_pelatihan` | Peserta per pelatihan |
|
||
| `bantuan` | Master program bantuan (PKH, BPNT, BLT, dll) |
|
||
| `histori_bantuan` | Riwayat penyaluran bantuan per penduduk |
|
||
| `laporan` | Laporan kondisi warga dari masyarakat |
|
||
| `chat` | Pesan koordinasi antar pengurus |
|
||
| `log_aktivitas` | Audit trail semua aktivitas sistem |
|
||
|
||
---
|
||
|
||
## ⚡ Fitur Utama
|
||
|
||
### 🗺️ WebGIS Interaktif
|
||
- Peta gelap (dark mode) berbasis OpenStreetMap + CartoDB
|
||
- **3 warna marker**: 🔴 Miskin | 🟡 Rentan | 🟢 Mampu
|
||
- Marker laporan masyarakat dengan kode urgensi
|
||
- Layer toggle per kategori
|
||
- Radius distribusi adjustable (100–1000m)
|
||
- Popup detail klik marker
|
||
|
||
### 👥 Manajemen Data Penduduk
|
||
- NIK 16 digit sebagai primary key
|
||
- **Umur dihitung otomatis** dari tanggal lahir (MySQL Generated Column)
|
||
- **Profil umur otomatis**: Balita / Anak / Remaja / Dewasa / Lansia
|
||
- Validasi pendidikan vs umur:
|
||
- Usia 7–15 → peringatan jika tidak sekolah
|
||
- Usia 16–18 → peringatan jika tidak sekolah
|
||
- Relasi ke Kartu Keluarga
|
||
|
||
### 🏠 Manajemen Keluarga
|
||
- Data KK lengkap (No KK, RT/RW, kelurahan, kecamatan)
|
||
- Relasi ke rumah ibadah terdekat
|
||
- Daftar anggota keluarga dengan detail kondisi
|
||
|
||
### 🎁 Sistem Bantuan
|
||
- **Prioritas otomatis**: miskin + sakit = SANGAT TINGGI; lansia sendiri = SANGAT TINGGI
|
||
- Deteksi warga yang belum pernah menerima bantuan
|
||
- Histori penyaluran bantuan per individu yang transparan
|
||
- Catat distribusi langsung dari halaman bantuan
|
||
|
||
### 📢 Laporan Masyarakat
|
||
- Bisa dikirim **tanpa login**
|
||
- Upload foto dokumentasi (JPG/PNG, maks 5MB)
|
||
- 4 tingkat urgensi: Rendah / Sedang / Tinggi / 🆘 Darurat
|
||
- Alur status: Pending → Diverifikasi → Diproses → Selesai
|
||
- Koordinat laporan via klik peta atau GPS
|
||
|
||
### 💬 Chat Koordinasi
|
||
- Chat realtime antar pengurus rumah ibadah
|
||
- Polling otomatis setiap 8 detik
|
||
- Notifikasi dot merah jika ada pesan baru
|
||
- Pesan broadcast ke semua pengurus
|
||
|
||
### 📊 Dashboard & Statistik
|
||
- KPI card: total penduduk, KK, miskin, rentan, laporan aktif
|
||
- Progress bar distribusi per rumah ibadah
|
||
- Analisis singkat di sidebar
|
||
|
||
---
|
||
|
||
## 🔒 Keamanan
|
||
- Input sanitasi (anti XSS) di semua endpoint
|
||
- Prepared statements PDO (anti SQL Injection)
|
||
- Session-based auth dengan cookie HttpOnly
|
||
- Role-based access control (RBAC) di backend
|
||
- Block akses langsung ke `config.php` dan `database.sql` via `.htaccess`
|
||
- Block eksekusi PHP di folder `uploads/`
|
||
|
||
---
|
||
|
||
## 🛠️ Teknologi
|
||
| Komponen | Teknologi |
|
||
|----------|-----------|
|
||
| Backend | PHP 7.4+ (PDO, Sessions) |
|
||
| Database | MySQL 5.7+ / MariaDB 10.3+ |
|
||
| Peta | Leaflet.js v1.9.4 |
|
||
| Tile Map | CartoDB Dark Matter (OpenStreetMap) |
|
||
| Geocoding | Nominatim API (OSM) |
|
||
| Frontend | Vanilla JS ES6+, CSS3 Variables |
|
||
| Font | Plus Jakarta Sans + DM Mono |
|
||
|
||
---
|
||
|
||
## 📝 Catatan Pengembangan Lanjutan
|
||
1. **Backend database**: Tambah `localStorage` atau backend sinkronisasi untuk multi-device
|
||
2. **Export laporan**: Tambah ekspor PDF/Excel menggunakan mPDF atau PhpSpreadsheet
|
||
3. **Notifikasi push**: Integrasikan Firebase Cloud Messaging untuk notifikasi laporan darurat
|
||
4. **PWA offline**: Service Worker untuk penggunaan lapangan tanpa internet
|
||
5. **Integrasi DTKS**: Sinkronisasi dengan Data Terpadu Kesejahteraan Sosial Kemensos RI
|
||
|
||
---
|
||
|
||
*Dikembangkan sebagai tugas Rekayasa Perangkat Lunak — Program Studi Informatika*
|
||
*WebGIS Pengentasan Kemiskinan Berbasis Komunitas dan Rumah Ibadah — Kota Pontianak*
|