Files
D1041231009-WebGIS-PovertyMap/README.md
T
2026-06-10 18:08:57 +07:00

196 lines
4.2 KiB
Markdown

# WebGIS Pemetaan Kemiskinan
Aplikasi WebGIS berbasis Laravel untuk memetakan rumah ibadah, keluarga miskin, radius layanan, bantuan, transfer tanggungan, dan statistik sebaran.
## Deploy Dengan Docker
Repository ini sudah disiapkan untuk jalan lewat Docker Compose:
- `app`: container PHP Laravel, expose port `8000`
- `mysql`: database MySQL 8.4 dengan volume persisten
- `vite`: hanya untuk development, tidak otomatis jalan saat production deploy
## Kebutuhan Hosting
- Docker Engine
- Docker Compose plugin
- Domain atau subdomain yang diarahkan ke server
- Reverse proxy hosting ke port aplikasi, misalnya `APP_PORT=8000`
Document root tidak perlu diarahkan manual ke `public` karena aplikasi berjalan di container Laravel.
## Setup Pertama Di Server
1. Upload atau clone project ke server.
2. Buat file environment Docker:
```bash
cp .env.docker.example .env
```
3. Edit `.env` minimal bagian ini:
```env
APP_ENV=production
APP_DEBUG=false
APP_URL=https://domain-anda.com
APP_PORT=8000
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=webgis_miskin
DB_USERNAME=webgis
DB_PASSWORD=password-kuat
MYSQL_ROOT_PASSWORD=password-root-kuat
MYSQL_HOST_PORT=3307
```
Jika project di-upload dari mesin development dan `.env` lama ikut terbawa, ubah nilainya ke konfigurasi production di atas. Docker Compose otomatis membaca file `.env` di root project.
4. Build asset frontend:
```bash
npm install
npm run build
```
5. Build dan jalankan container:
```bash
docker compose up --build -d
```
Entrypoint container `app` otomatis menjalankan:
- `composer install`
- membuat `.env` dari `.env.docker.example` jika belum ada
- `php artisan key:generate` jika `APP_KEY` belum ada
- `php artisan migrate --force`
- `php artisan db:seed --force`
- `php artisan schedule:work`
## Command Operasional
Cek container:
```bash
docker compose ps
```
Lihat log aplikasi:
```bash
docker compose logs -f app
```
Masuk ke container app:
```bash
docker compose exec app sh
```
Jalankan ulang cache Laravel setelah edit `.env`:
```bash
docker compose exec app php artisan config:cache
docker compose exec app php artisan route:cache
docker compose exec app php artisan view:cache
```
Restart container:
```bash
docker compose restart app
```
Stop semua container:
```bash
docker compose down
```
Stop container tanpa menghapus data database:
```bash
docker compose down
```
Hapus container sekaligus volume database:
```bash
docker compose down -v
```
Gunakan `down -v` hanya kalau memang mau reset data MySQL.
## Update Aplikasi Di Server
1. Pull atau upload perubahan terbaru.
2. Build ulang asset:
```bash
npm install
npm run build
```
3. Rebuild container:
```bash
docker compose up --build -d
```
4. Refresh cache:
```bash
docker compose exec app php artisan optimize:clear
docker compose exec app php artisan config:cache
docker compose exec app php artisan route:cache
docker compose exec app php artisan view:cache
```
## Development Lokal Dengan Vite
Untuk development yang butuh Vite dev server:
```bash
docker compose --profile dev up --build -d
```
Vite akan tersedia di port `5173`. Untuk production deploy, jangan gunakan profile `dev`.
## Akun Awal
Seeder membuat akun awal berikut:
| Role | Email | Password |
| --- | --- | --- |
| Administrator | `admin@webgis.local` | `admin123` |
| Pengurus Ibadah | `pengurus@webgis.local` | `password123` |
| Petugas Pendataan | `petugas@webgis.local` | `password123` |
| Pemangku Kebijakan | `kebijakan@webgis.local` | `password123` |
Ganti password akun awal setelah deploy.
## Halaman Utama
- `/login` - login pengguna
- `/map` - peta interaktif
- `/data` - data tabular
- `/dashboard` - dashboard statistik
- `/permohonan` - permohonan transfer
- `/admin/users` - manajemen pengguna
- `/admin/logs` - log aktivitas
- `/admin/settings` - pengaturan sistem
## Catatan Penting
- Jangan commit `.env` ke repository.
- Pastikan `APP_URL` sesuai domain production.
- Pastikan reverse proxy hosting meneruskan traffic ke `APP_PORT`.
- Volume `webgis_mysql_data` menyimpan data MySQL.
- Folder project dimount ke `/var/www/html`, jadi perubahan file di server langsung terbaca container.
- Jika hosting punya backup volume, backup volume MySQL dan folder project.