add files and folders
This commit is contained in:
@@ -0,0 +1,185 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user