Files
WebGis_UAS_Project/05/README.md
T
2026-06-10 19:23:50 +07:00

185 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 (1001000m)
- 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 715 → peringatan jika tidak sekolah
- Usia 1618 → 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*