# Setup & Cara Menjalankan — SiPertan
## Panduan untuk Windows

---

## Persiapan Awal — Software yang Dibutuhkan

Pastikan semua software berikut sudah terinstall sebelum mulai:

| Software | Kegunaan | Link Download |
|---|---|---|
| **XAMPP** (PHP 8.2+) | Server PHP + MySQL | https://www.apachefriends.org |
| **Composer** | Package manager PHP | https://getcomposer.org/download |
| **Flutter SDK** | Framework mobile | https://flutter.dev/docs/get-started/install/windows |
| **Android Studio** | Emulator Android | https://developer.android.com/studio |
| **Git** (opsional) | Version control | https://git-scm.com |

> **Catatan:** Setelah install XAMPP, pastikan versi PHP yang dipakai adalah **8.2 atau lebih baru**.
> Cek dengan buka Command Prompt → ketik `php -v`

---

## Langkah 1 — Ekstrak File ZIP

1. Klik kanan file ZIP → **Extract All...**
2. Pilih lokasi ekstrak, contoh: `C:\Projects\`
3. Setelah selesai, struktur folder akan seperti ini:
   ```
   Project_Pertanahan/
   ├── laravel/
   ├── flutter_app/
   ├── logo/
   ├── penjelasan.md
   └── setup-running.md
   ```

---

## Langkah 2 — Setup Database (MySQL)

1. Buka **XAMPP Control Panel**
2. Klik **Start** pada **Apache** dan **MySQL**
3. Buka browser → pergi ke `http://localhost/phpmyadmin`
4. Klik **New** di sidebar kiri
5. Isi nama database: `project_pertanahan`
6. Klik **Create**

---

## Langkah 3 — Setup Laravel (Backend Web)

Buka **Command Prompt** atau **PowerShell**, lalu jalankan perintah berikut satu per satu:

### 3.1 Masuk ke folder Laravel
```
cd C:\Projects\Project_Pertanahan\laravel
```
*(sesuaikan path dengan lokasi ekstrak Anda)*

### 3.2 Install dependencies PHP
```
composer install
```
> Proses ini membutuhkan koneksi internet. Tunggu hingga selesai.

### 3.3 Buat file konfigurasi
```
copy .env.example .env
```

### 3.4 Generate app key
```
php artisan key:generate
```

### 3.5 Edit file `.env`

Buka file `laravel\.env` dengan Notepad atau VS Code, cari bagian berikut dan sesuaikan:

```env
APP_URL=http://localhost:8000

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=project_pertanahan
DB_USERNAME=root
DB_PASSWORD=
```

> **Password MySQL XAMPP** defaultnya kosong (tidak perlu diisi).

### 3.6 Jalankan migrasi dan seeder database
```
php artisan migrate --seed
```
> Perintah ini akan membuat semua tabel dan mengisi data awal (akun admin).

### 3.7 Buat link storage
```
php artisan storage:link
```

### 3.8 Jalankan server Laravel
```
php artisan serve
```

Jika berhasil, akan muncul:
```
INFO  Server running on [http://127.0.0.1:8000].
```

Buka browser → `http://localhost:8000` → halaman login akan muncul.

---

## Langkah 4 — Setup Flutter (Aplikasi Mobile)

Buka **Command Prompt baru** (jangan tutup yang menjalankan Laravel).

### 4.1 Masuk ke folder Flutter
```
cd C:\Projects\Project_Pertanahan\flutter_app
```

### 4.2 Install dependencies Flutter
```
flutter pub get
```

### 4.3 Jalankan emulator Android

1. Buka **Android Studio**
2. Klik **Device Manager** (ikon HP di toolbar kanan atas)
3. Buat emulator baru jika belum ada → pilih perangkat (contoh: Pixel 6) → pilih Android versi terbaru
4. Klik tombol **Play** untuk menyalakan emulator
5. Tunggu sampai emulator selesai booting

### 4.4 Jalankan aplikasi Flutter
```
flutter run
```

> Pastikan emulator sudah menyala sebelum menjalankan perintah ini.

---

## Langkah 5 — Login & Uji Coba

### Akses Web (Browser)
| URL | Keterangan |
|---|---|
| `http://localhost:8000/login` | Halaman login user/admin |
| `http://localhost:8000/register` | Daftar akun pemohon baru |
| `http://localhost:8000/admin/dashboard` | Panel admin (login dulu) |

**Akun Admin siap pakai:**
- Email: `admin1@ptp.com`
- Password: `password12345`

**Akun Pemohon:** Daftar baru via halaman `/register`

### Akses Mobile (Flutter)
- Aplikasi otomatis terhubung ke server Laravel di `http://10.0.2.2:8000`
- Login dengan akun yang sudah didaftar di web

---

## Cara Menjalankan Ulang (Setelah PC Restart)

Setiap kali PC dinyalakan ulang, jalankan langkah berikut:

**Terminal 1 — Jalankan Laravel:**
```
cd C:\Projects\Project_Pertanahan\laravel
php artisan serve
```

**Terminal 2 — Jalankan Flutter (jika perlu):**
```
cd C:\Projects\Project_Pertanahan\flutter_app
flutter run
```

Jangan lupa **start Apache & MySQL di XAMPP** terlebih dahulu.

---

## Pengaturan Email (Opsional)

Jika ingin fitur notifikasi email aktif, edit file `laravel\.env`:

```env
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=emailanda@gmail.com
MAIL_PASSWORD=xxxx xxxx xxxx xxxx
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=emailanda@gmail.com
MAIL_FROM_NAME="Sistem PTP"
```

> `MAIL_PASSWORD` diisi dengan **App Password Gmail** (bukan password Gmail biasa).
> Cara mendapatkannya: Google Account → Security → 2-Step Verification → App Passwords

---

## Troubleshooting

**Q: Muncul error "SQLSTATE: Connection refused" saat migrate**
- Pastikan MySQL sudah distart di XAMPP
- Pastikan nama database di `.env` sudah benar: `project_pertanahan`

**Q: Muncul error "Please provide a valid cache path"**
- Jalankan: `php artisan config:clear`

**Q: Halaman web muncul tapi gambar/file tidak tampil**
- Jalankan ulang: `php artisan storage:link`

**Q: Flutter error "Connection refused" di emulator**
- Pastikan Laravel sedang berjalan (`php artisan serve`)
- Emulator Android menggunakan `10.0.2.2` (bukan `localhost`) untuk koneksi ke PC host — ini sudah dikonfigurasi otomatis

**Q: `composer install` lambat atau gagal**
- Coba jalankan: `composer install --no-interaction`
- Pastikan koneksi internet stabil

**Q: `flutter run` tidak menemukan device**
- Pastikan emulator sudah menyala penuh (sudah sampai layar home Android)
- Coba: `flutter devices` untuk melihat device yang terdeteksi
