feat: Plan 2 — Form Edit Rumah Ibadah & Keluarga Miskin + Ownership

- Add user_id FK (nullable) to rumah_ibadah for ownership tracking
- IbadahController: set user_id on store; enforce ownership on update/destroy
- Add edit modals to map and data views (ibadah + miskin)
- Popup and table row Edit buttons with per-record ownership check
- 7 new tests covering ownership and full-field updates
- Fix ExampleTest for auth-protected routes
- Fix UserFactory missing email_verified_at column
- Mark Plan 2 complete in missing_features.md; update README

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
GuavaPopper
2026-06-02 20:29:36 +07:00
parent 15294a5d2f
commit 2e2b42f96b
11 changed files with 744 additions and 28 deletions
+87 -4
View File
@@ -1,4 +1,4 @@
# Dokumentasi Fungsional: WebGIS Miskin & Ibadah
# Dokumentasi Fungsional: WebGIS Pemetaan Kemiskinan
Proyek ini adalah sistem informasi geografis (WebGIS) berbasis web yang dirancang untuk memetakan sebaran rumah ibadah dan keluarga kurang mampu (miskin). Sistem ini memungkinkan pengguna untuk melakukan analisis spasial berdasarkan radius untuk mengetahui dampak atau jangkauan layanan rumah ibadah terhadap komunitas di sekitarnya.
@@ -20,8 +20,10 @@ Menggunakan library **Leaflet.js**, sistem menyediakan antarmuka peta yang respo
### 2. Manajemen Data (CRUD)
Sistem mendukung pengelolaan data secara penuh:
- **Tambah Data via Peta**: Klik pada lokasi di peta untuk memunculkan formulir input data baru.
- **Edit Data via Form**: Klik tombol "Edit" pada popup marker di peta atau pada baris di tabel data untuk membuka formulir edit. Mendukung pembaruan semua field teks untuk Rumah Ibadah (nama, jenis, pengurus, telepon, jemaah, radius, keterangan) dan Keluarga Miskin (nama KK, jumlah jiwa, pekerjaan, pendapatan, kondisi, keterangan).
- **Update Lokasi (Drag & Drop)**: Marker dapat digeser (drag) untuk memperbarui koordinat lokasi di database secara real-time.
- **Hapus Data**: Menghapus data melalui popup pada marker atau melalui tabel data.
- **Ownership Rumah Ibadah**: Pengurus Rumah Ibadah hanya dapat mengubah atau menghapus data rumah ibadah yang mereka tambahkan sendiri. Administrator dapat mengubah semua data.
- **Data Tabular**: Halaman khusus yang menampilkan seluruh data dalam bentuk tabel dengan statistik ringkasan.
### 3. Analisis Spasial Radius
@@ -33,9 +35,9 @@ Fitur unggulan untuk menganalisis sebaran keluarga miskin di sekitar rumah ibada
## Arsitektur Teknis
Proyek ini telah dimigrasikan ke framework **Laravel 11** dengan struktur sebagai berikut:
Proyek ini telah dimigrasikan ke framework **Laravel 13** dengan struktur sebagai berikut:
- **Backend**:
- **Backend**:
- **Laravel Eloquent**: Digunakan untuk interaksi database yang aman dan efisien.
- **RESTful API**: Menyediakan endpoint `/api/ibadah` dan `/api/miskin` untuk komunikasi frontend-backend.
- **Migrations**: Skema database yang terstruktur dan mudah dikelola.
@@ -45,6 +47,87 @@ Proyek ini telah dimigrasikan ke framework **Laravel 11** dengan struktur sebaga
- **JavaScript (Vanilla)**: Menangani logika peta dan interaksi API tanpa beban framework berat.
- **Database**: MySQL/MariaDB untuk penyimpanan data spasial dan atribut.
## Cara Menjalankan Project
Cara utama untuk menjalankan project ini adalah menggunakan **Docker Compose**. Setup Docker sudah mencakup Laravel app, Vite dev server, dan MySQL.
### Prasyarat
- Docker Desktop sudah terinstall dan berjalan.
- Port `8000`, `5173`, dan `3307` sedang tidak dipakai aplikasi lain.
### Menjalankan dengan Docker
Jalankan perintah berikut dari root project:
```powershell
docker compose up -d --build
```
Container `app` akan otomatis:
- menginstall dependency Composer jika `vendor` belum ada di volume Docker,
- membuat file `.env` dari `.env.docker.example` jika `.env` belum ada,
- generate `APP_KEY` jika masih kosong,
- membersihkan config cache,
- menjalankan migration ke database MySQL.
Container `vite` akan otomatis menginstall dependency Node jika `node_modules` belum ada di volume Docker, lalu menjalankan Vite dev server.
Setelah container berjalan, buka:
- Aplikasi: `http://localhost:8000`
- Vite dev server: `http://localhost:5173`
- MySQL dari host: `127.0.0.1:3307`
- MySQL dari container Laravel: `mysql:3306`
### Konfigurasi Database
Konfigurasi database development menggunakan MySQL:
```env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=webgis_miskin
DB_USERNAME=webgis
DB_PASSWORD=secret
```
Credential MySQL root:
```text
MYSQL_ROOT_PASSWORD=root
```
### Perintah yang Sering Dipakai
```powershell
docker compose ps
docker compose logs -f app
docker compose logs -f vite
docker compose exec app php artisan migrate:status
docker compose exec app php artisan migrate
docker compose exec app php artisan test
docker compose down
```
Untuk menghapus database MySQL Docker dan mulai dari database kosong:
```powershell
docker compose down -v
```
### Menjalankan Artisan di Docker
Semua perintah Artisan dijalankan lewat service `app`.
```powershell
docker compose exec app php artisan route:list
docker compose exec app php artisan migrate:fresh
docker compose exec app php artisan cache:clear
```
## Daftar Halaman
1. **Beranda (`/`)**: Halaman landing dengan latar belakang peta animasi dan navigasi cepat.
@@ -52,4 +135,4 @@ Proyek ini telah dimigrasikan ke framework **Laravel 11** dengan struktur sebaga
3. **Data Tabular (`/data`)**: Manajemen data dalam format tabel dengan ringkasan statistik total.
---
*Dokumentasi ini dibuat untuk menjelaskan kapabilitas sistem WebGIS Miskin & Ibadah versi Laravel.*
*Dokumentasi ini dibuat untuk menjelaskan kapabilitas sistem WebGIS Pemetaan Kemiskinan versi Laravel.*