# 🏡 Portal Desa - Sistem Informasi & Pelayanan Desa Digital

[![Laravel 11](https://img.shields.io/badge/Laravel-11.x-red.svg)](https://laravel.com)
[![Livewire 3](https://img.shields.io/badge/Livewire-3.x-blue.svg)](https://livewire.laravel.com)
[![Tailwind CSS](https://img.shields.io/badge/Tailwind-4.x-teal.svg)](https://tailwindcss.com)

Portal Desa adalah platform berbasis web modern yang dirancang untuk mendigitalkan informasi, pelayanan, dan interaksi warga desa. Platform ini menyediakan antarmuka publik yang responsif serta dashboard administrasi yang lengkap untuk pengelolaan desa.

## ✨ Fitur Utama

### 🌍 Sisi Publik (Warga)
- **Berita & Pengumuman:** Navigasi konten dengan kategori dinamis, tag, dan media embed (YouTube/Vimeo).
- **Pelayanan Mandiri:** Pengajuan surat-menyurat secara digital dengan sistem pelacakan (tracking code).
- **Layanan Pengaduan:** Chat real-time antara warga dan admin dengan opsi anonim untuk privasi warga.
- **Profil Desa:** Halaman lengkap mengenai sejarah, visi & misi, serta struktur organisasi perangkat desa.
- **Interaksi Sosial:** Tombol berbagi berita ke WhatsApp, Facebook, dan X (Twitter) langsung dari halaman detail.
- **Live Chat tawk.to:** Integrasi langsung dengan tawk.to untuk bantuan operator pelayanan desa yang responsif.
- **Mobile Responsive:** Desain dioptimalkan untuk akses melalui perangkat smartphone.

### 🛡️ Dashboard Admin (Perangkat Desa)
- **Manajemen Berita (CKEditor 5):** Editor teks kaya dengan dukungan tabel, media, dan pengelolaan thumbnail utama.
- **Manajemen Pelayanan:** Sistem review pengajuan surat mandiri dari warga.
- **Manajemen Pengaduan:** Panel percakapan terpadu untuk merespon aduan warga.
- **Statistik & Dashboard:** Ringkasan data pelayanan dan aktivitas terbaru.
- **Account Management:** Pengaturan profil admin, ganti password, dan pengelolaan status aktif pengguna.
- **Pengaturan Umum:** Konfigurasi nama desa, visi, misi, hingga integrasi pihak ketiga (Widget ID tawk.to).

### 🔒 Keamanan & Infrastruktur
- **Brute-Force Protection:** Rate limiting pada halaman login admin.
- **Spam Control:** Batasan jumlah submit pada layanan pengaduan dan surat mandiri berdasarkan IP.
- **XSS Protection:** Pembersihan input otomatis untuk mencegah skrip berbahaya.
- **Database Eloquent:** Penanganan query aman terhadap SQL Injection.

## 🛠️ Tech Stack
- **Framework:** [Laravel 11](https://laravel.com)
- **Frontend Logic:** [Livewire 3](https://livewire.laravel.com) & [Alpine.js](https://alpinejs.dev)
- **Styling:** [Tailwind CSS 4](https://tailwindcss.com)
- **Text Editor:** [CKEditor 5 Classic](https://ckeditor.com)
- **Icons:** [Lucide Icons](https://lucide.dev)
- **Database:** MySQL / MariaDB

## 🚀 Persyaratan Instalasi
- **PHP:** >= 8.2
- **Composer:** Latest
- **Node.js & NPM:** (Untuk build asset CSS/JS)
- **Database:** MySQL 5.7+ atau MariaDB 10.3+
- **Browser:** Modern Browser (Chrome, Firefox, Safari, Edge)

## 📥 Cara Instalasi

1. **Clone Repository:**
   ```bash
   git clone https://github.com/misbaululum/portal-desa.git
   cd portal-desa
   ```

2. **Install Dependencies:**
   ```bash
   composer install
   npm install
   ```

3. **Setup Environment:**
   Salin file `.env.example` menjadi `.env` dan konfigurasikan database Anda.
   ```bash
   cp .env.example .env
   php artisan key:generate
   ```

4. **Migrate & Seed:**
   Jalankan migrasi database beserta data awal (Master data, user admin).
   ```bash
   php artisan migrate --seed
   ```

5. **Symlink Storage:**
   Aktifkan link untuk file upload (gambar berita/aduan).
   ```bash
   php artisan storage:link
   ```

6. **Build & Run:**
   Jalankan asset compiler dan nyalakan server lokal.
   ```bash
   npm run dev
   # Dalam tab baru
   php artisan serve
   ```

7. **Akses Website:**
   - **Publik:** `http://localhost:8000`
   - **Admin:** `http://localhost:8000/admin/login`

## 📄 Lisensi
Sistem ini bersifat Open Source di bawah lisensi [MIT](LICENSE).

---
*Dibuat oleh Tim Pengembang Desa Misbaul Ulum.*
