# SILONTAR

**SILONTAR** (Sistem Informasi Layanan Online Terpadu) adalah aplikasi web berbasis Laravel untuk mendukung program **GENTASKIN** (Gerakan NTT Tuntas Stunting dan Kemiskinan Ekstrim), khususnya dalam administrasi KKN antarperguruan tinggi di wilayah Nusa Tenggara Timur.

## Fitur Utama

- **Manajemen Operator**: Registrasi operator perguruan tinggi dengan upload surat permohonan, captcha, approval/reject oleh admin, serta email notifikasi penolakan.
- **Manajemen Akademik**: CRUD data dosen, mahasiswa, kelompok KKN, kepala desa, dan dokumen pendukung.
- **Master Data**: Perguruan tinggi, program studi, kabupaten, kecamatan, desa, kelompok, kriteria penilaian, dan penelitian.
- **Pengumuman & Panduan**: Pengelolaan konten publik dengan gambar/PDF, sanitizer HTML, serta arsip panduan multi-file.
- **Dashboard Publik**: Peta sebaran KKN di Nusa Tenggara Timur hingga level desa; hanya menampilkan desa yang memiliki data kelompok KKN. Klik titik desa untuk melihat detail kabupaten, kecamatan, desa, dan jumlah anggota KKN.
- **Laporan Aktivitas**: Audit log lengkap (login/logout, mutasi data, approve/reject) dengan IP dan user-agent.
- **Utilitas**: Tes email SMTP, pengaturan buka/tutup registrasi & input data, ekspor Excel/PDF, serta dashboard realtime.

## Teknologi

- **Laravel** 12.x
- **PHP** ^8.2
- **MySQL** (production) / SQLite (default skeleton)
- **Tailwind CSS** 4 + Vite
- **AdminLTE** 3 + Bootstrap 4
- **DOMPDF** untuk ekspor PDF

## Persyaratan

- PHP >= 8.2 dengan ekstensi: `pdo_mysql`, `mbstring`, `openssl`, `fileinfo`, `gd`/`imagick` (opsional), `zip`, `xml`
- Composer 2.x
- Node.js 20+ & npm (untuk build asset frontend)
- MySQL 8.0+ (jika menggunakan `DB_CONNECTION=mysql`)

## Instalasi

```bash
# 1. Install dependensi PHP & Node.js
composer install
npm install

# 2. Salin konfigurasi environment
cp .env.example .env
php artisan key:generate

# 3. Sesuaikan konfigurasi database di .env
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=kkn
# DB_USERNAME=root
# DB_PASSWORD=

# 4. Jalankan migrasi dan seeding awal (jika tersedia)
php artisan migrate --force

# 5. Isi data kecamatan & desa seluruh NTT dari API Wilayah Indonesia
php artisan app:seed-wilayah

# 6. (Opsional) Perbaiki koordinat via Nominatim; desa tanpa hasil akan otomatis fallback
php artisan app:geocode-wilayah --skip-desas

# 7. Buat storage link dan build asset
php artisan storage:link
npm run build
```

Setelah instalasi, buat akun admin pertama melalui seeder atau manual di tabel `users` dengan `role = admin` dan `status_validasi = approved`.

## Menjalankan Aplikasi

```bash
php artisan serve
```

Akses aplikasi di `http://localhost:8000`.

## Testing

```bash
php artisan test
```

Semua pengujian menggunakan database terpisah (refresh) melalui trait `RefreshDatabase`.

## Struktur Peran

| Peran | Keterangan |
|-------|------------|
| `admin` | Akses penuh ke seluruh modul, master data, laporan, dan pengaturan. |
| `operator` | Mengelola dosen, mahasiswa, dan data milik perguruan tinggi yang terkait. Perlu disetujui admin terlebih dahulu. |

## Catatan Penting

- Pastikan `APP_ENV=production` diiringi `APP_DEBUG=false` pada server produksi.
- Konfigurasi mailer (`MAIL_MAILER`, `MAIL_HOST`, dsb.) di `.env` agar fitur notifikasi email berfungsi.
- Dokumen privat disimpan di `storage/app/private/documents`; pastikan direktori tersebut writable.

## Lisensi

Proyek ini dikembangkan untuk kebutuhan internal LLDIKTI Wilayah XV dan dilisensikan di bawah [MIT license](https://opensource.org/licenses/MIT).
