add files

This commit is contained in:
2026-06-10 18:32:52 +07:00
parent 12c04e37eb
commit 3430850d69
45 changed files with 7872 additions and 0 deletions
+184
View File
@@ -0,0 +1,184 @@
# 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*