update sistem proyek menjadi lebih struktural. dimulai dengan memisahkan dashboard publik dan administrator pada setiap proyek, membuat dockerfile untuk setup environment docker, dan merapikan database serta membuat file migration.
This commit is contained in:
@@ -18,11 +18,17 @@ Aplikasi dibuat menggunakan PHP native, MySQL, JavaScript, Leaflet.js, Leaflet D
|
||||
|
||||
### 1. WebGIS Geometri
|
||||
|
||||
Lokasi: `geometri/index.php`
|
||||
Lokasi publik: `geometri/index.php`
|
||||
Lokasi admin: `geometri/admin.php`
|
||||
|
||||
Modul ini digunakan untuk latihan dan pengelolaan data geometri dasar.
|
||||
|
||||
Fitur:
|
||||
Fitur publik:
|
||||
|
||||
- Menampilkan data point, jalan/polyline, dan polygon/parsil.
|
||||
- Melihat detail data melalui popup peta.
|
||||
|
||||
Fitur admin:
|
||||
|
||||
- Menampilkan data point, jalan/polyline, dan polygon/parsil.
|
||||
- Menambah point dengan nama dan kode point.
|
||||
@@ -33,12 +39,20 @@ Fitur:
|
||||
|
||||
### 2. WebGIS SPBU
|
||||
|
||||
Lokasi: `spbu/index.php`
|
||||
Lokasi publik: `spbu/index.php`
|
||||
Lokasi admin: `spbu/admin.php`
|
||||
|
||||
Modul ini digunakan untuk memetakan lokasi SPBU di Pontianak.
|
||||
|
||||
Fitur:
|
||||
Fitur publik:
|
||||
|
||||
- Menampilkan titik SPBU.
|
||||
- Membedakan SPBU 24 jam dan tidak 24 jam.
|
||||
- Toggle layer untuk menampilkan/menyembunyikan SPBU berdasarkan status.
|
||||
|
||||
Fitur admin:
|
||||
|
||||
- Login admin.
|
||||
- Menampilkan titik SPBU.
|
||||
- Membedakan SPBU 24 jam dan tidak 24 jam.
|
||||
- Menambah titik SPBU dari peta.
|
||||
@@ -148,77 +162,110 @@ Pastikan perangkat sudah memiliki:
|
||||
|
||||
3. Jalankan Apache dan MySQL dari XAMPP Control Panel.
|
||||
|
||||
4. Buat database MySQL, contoh:
|
||||
4. Siapkan konfigurasi database melalui environment variable. Contoh variabel tersedia di `.env.example`.
|
||||
|
||||
```text
|
||||
DB_HOST=localhost
|
||||
DB_PORT=3306
|
||||
DB_DATABASE=webgis_spbu
|
||||
DB_USERNAME=root
|
||||
DB_PASSWORD=
|
||||
```
|
||||
|
||||
Pada Coolify, isi variabel tersebut dari menu Environment Variables project. Jangan menulis password database langsung di `php/db.php`.
|
||||
|
||||
5. Jalankan migration database yang sudah disediakan.
|
||||
|
||||
```sql
|
||||
CREATE DATABASE webgis_spbu;
|
||||
SOURCE migrations/001_init_database.sql;
|
||||
```
|
||||
|
||||
5. Sesuaikan konfigurasi koneksi database pada file `php/db.php`.
|
||||
File migration tersebut akan membuat database `webgis_spbu`, seluruh tabel aplikasi, dan akun default.
|
||||
|
||||
```php
|
||||
$conn = new mysqli("localhost", "root", "password_database", "webgis_spbu");
|
||||
```
|
||||
|
||||
6. Buat tabel yang dibutuhkan. Jika belum memiliki file `.sql`, gunakan struktur dasar berikut sebagai acuan.
|
||||
|
||||
```sql
|
||||
CREATE TABLE spbu (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(150) NOT NULL,
|
||||
no_spbu VARCHAR(100) NOT NULL,
|
||||
status VARCHAR(50) NOT NULL,
|
||||
latitude DOUBLE NOT NULL,
|
||||
longitude DOUBLE NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE jalan (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(150) NOT NULL,
|
||||
status VARCHAR(50) NOT NULL,
|
||||
panjang DOUBLE DEFAULT 0,
|
||||
geom LONGTEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE parsil (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(150) NOT NULL,
|
||||
status VARCHAR(50) NOT NULL,
|
||||
luas DOUBLE DEFAULT 0,
|
||||
geom LONGTEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE masjid (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(150) NOT NULL,
|
||||
pic VARCHAR(150) NOT NULL,
|
||||
radius DOUBLE DEFAULT 500,
|
||||
latitude DOUBLE NOT NULL,
|
||||
longitude DOUBLE NOT NULL,
|
||||
radius_layanan DOUBLE DEFAULT 500
|
||||
);
|
||||
|
||||
CREATE TABLE penduduk_miskin (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_kk VARCHAR(150) NOT NULL,
|
||||
jumlah_anggota INT DEFAULT 1,
|
||||
alamat TEXT NOT NULL,
|
||||
latitude DOUBLE NOT NULL,
|
||||
longitude DOUBLE NOT NULL,
|
||||
penghasilan VARCHAR(50),
|
||||
kondisi_rumah VARCHAR(50),
|
||||
sumber_air VARCHAR(50),
|
||||
skor_kerentanan DOUBLE DEFAULT 0,
|
||||
jenis_bantuan VARCHAR(100)
|
||||
);
|
||||
```
|
||||
|
||||
7. Buka aplikasi melalui browser:
|
||||
6. Buka aplikasi melalui browser:
|
||||
|
||||
```text
|
||||
http://localhost/WebGIS2026/
|
||||
```
|
||||
|
||||
## Catatan Deploy Coolify
|
||||
|
||||
Untuk deploy di Coolify, project ini dapat dijalankan sebagai aplikasi PHP native. Pastikan project memiliki service MySQL/MariaDB, lalu set environment variable berikut pada aplikasi:
|
||||
|
||||
```text
|
||||
DB_HOST=<host service database>
|
||||
DB_PORT=3306
|
||||
DB_DATABASE=webgis_spbu
|
||||
DB_USERNAME=<username database>
|
||||
DB_PASSWORD=<password database>
|
||||
```
|
||||
|
||||
Jika service database di Coolify memakai nama variabel `MYSQL_*`, aplikasi juga mendukung:
|
||||
|
||||
```text
|
||||
MYSQL_HOST=<host service database>
|
||||
MYSQL_PORT=3306
|
||||
MYSQL_DATABASE=webgis_spbu
|
||||
MYSQL_USER=<username database>
|
||||
MYSQL_PASSWORD=<password database>
|
||||
```
|
||||
|
||||
Docker tidak wajib jika Coolify/Nixpacks berhasil mendeteksi aplikasi PHP dan menyediakan web server PHP. Namun repository ini sudah menyediakan `Dockerfile`, sehingga mode deployment paling stabil di Coolify adalah memilih build dari Dockerfile. Dockerfile tersebut memakai `php:8.2-apache` dan memasang ekstensi `mysqli`.
|
||||
|
||||
## Menjalankan Dengan Docker Compose
|
||||
|
||||
Repository ini juga menyediakan `docker-compose.yml` untuk menjalankan seluruh service secara lokal:
|
||||
|
||||
- `app`: aplikasi PHP Apache
|
||||
- `db`: MySQL 8.4
|
||||
- `phpmyadmin`: panel database
|
||||
|
||||
Jalankan:
|
||||
|
||||
```bash
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
URL akses:
|
||||
|
||||
```text
|
||||
Aplikasi: http://localhost:8080
|
||||
phpMyAdmin: http://localhost:8081
|
||||
```
|
||||
|
||||
Kredensial database default Docker Compose:
|
||||
|
||||
```text
|
||||
Host: db
|
||||
Port internal: 3306
|
||||
Port host/lokal: 3307
|
||||
Database: webgis_spbu
|
||||
Username: webgis_user
|
||||
Password: webgis_password
|
||||
Root password: root_password
|
||||
```
|
||||
|
||||
File migration di folder `migrations/` akan otomatis dijalankan oleh MySQL saat volume database pertama kali dibuat. File `001_init_database.sql` membuat struktur tabel dan akun login, sedangkan `002_seed_sample_data.sql` mengisi data contoh untuk Docker Compose.
|
||||
|
||||
Data contoh yang disediakan:
|
||||
|
||||
- 3 point geometri
|
||||
- 3 polyline jalan
|
||||
- 3 polygon/parsil
|
||||
- 7 SPBU, terdiri dari 5 SPBU 24 jam dan 2 tidak 24 jam
|
||||
- 3 masjid dengan radius layanan
|
||||
- 14 data penduduk miskin, termasuk minimal 1 blind spot
|
||||
- akun `admin / password` dan `publik / password`
|
||||
|
||||
Jika migration atau seed berubah dan ingin mengulang dari awal, hentikan container lalu hapus volume database:
|
||||
|
||||
```bash
|
||||
docker compose down -v
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
Catatan: perintah `down -v` akan menghapus data database container.
|
||||
|
||||
## Cara Penggunaan
|
||||
|
||||
### Membuka Dashboard Utama
|
||||
@@ -254,20 +301,28 @@ Pastikan perangkat sudah memiliki:
|
||||
6. Gunakan tombol layer `24 Jam` dan `Tidak 24 Jam` untuk memfilter tampilan.
|
||||
7. Klik marker SPBU untuk melihat detail atau menghapus data.
|
||||
|
||||
### Login Admin Modul Sosial
|
||||
### Login Admin
|
||||
|
||||
1. Buka `http://localhost/WebGIS2026/sosial/`.
|
||||
1. Buka salah satu dashboard publik:
|
||||
- `http://localhost/WebGIS2026/geometri/`
|
||||
- `http://localhost/WebGIS2026/spbu/`
|
||||
- `http://localhost/WebGIS2026/sosial/`
|
||||
2. Klik tombol `Admin Login`.
|
||||
3. Masukkan akun default:
|
||||
3. Masukkan salah satu akun default:
|
||||
|
||||
```text
|
||||
Role Admin
|
||||
Username: admin
|
||||
Password: admin123
|
||||
Password: password
|
||||
|
||||
Role Publik
|
||||
Username: publik
|
||||
Password: password
|
||||
```
|
||||
|
||||
4. Setelah berhasil login, sistem akan membuka panel admin di `sosial/admin.php`.
|
||||
4. Akun `admin` akan diarahkan ke panel admin sesuai project yang sedang dibuka. Akun `publik` diarahkan ke dashboard publik. Dashboard publik juga dapat diakses tanpa login.
|
||||
|
||||
Catatan: ubah kredensial default di `sosial/login.php` sebelum proyek digunakan di lingkungan publik.
|
||||
Catatan: akun default berasal dari tabel `users`. Ubah atau tambah akun melalui database, bukan dari `sosial/login.php`.
|
||||
|
||||
### Menambah Data Masjid
|
||||
|
||||
@@ -332,7 +387,8 @@ Beberapa endpoint utama yang digunakan aplikasi:
|
||||
| `php/show_geometri.php` | Mengambil data point, jalan, dan parsil |
|
||||
| `php/show_spbu.php` | Mengambil data SPBU |
|
||||
| `php/show_sosial.php` | Mengambil data masjid dan penduduk miskin |
|
||||
| `php/insert.php` | Menambah data SPBU/point |
|
||||
| `php/insert_point.php` | Menambah data point geometri |
|
||||
| `php/insert.php` | Menambah data SPBU |
|
||||
| `php/insert_line.php` | Menambah data jalan |
|
||||
| `php/insert_polygon.php` | Menambah data parsil |
|
||||
| `php/insert_masjid.php` | Menambah data masjid |
|
||||
@@ -355,7 +411,7 @@ Beberapa endpoint utama yang digunakan aplikasi:
|
||||
|
||||
- Import/export data GeoJSON.
|
||||
- Filter data berdasarkan kecamatan atau kelurahan.
|
||||
- Role user untuk admin, petugas, dan viewer.
|
||||
- Pemisahan akses admin dan publik untuk seluruh modul WebGIS.
|
||||
- Upload dokumentasi/foto penduduk atau masjid.
|
||||
- Dashboard laporan bantuan sosial.
|
||||
- Integrasi data batas administrasi.
|
||||
|
||||
Reference in New Issue
Block a user