# 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.