Transformasi digital desa di Indonesia selama ini kerap hanya berfokus pada keberadaan situs web profil desa statis yang pasif. Ketika warga memerlukan informasi surat atau ingin mengadukan kerusakan fasilitas umum, prosesnya masih terfragmentasi melalui antrean fisik atau grup pesan singkat tanpa kepastian tindak lanjut.
DesaAI hadir sebagai AI-Powered Operating System terpadu yang menjembatani masyarakat desa (Citizen) dengan pemerintah desa (Government) melalui siklus pelayanan tertutup (closed-loop workflow):
- Bukan Sekadar Chatbot: AI dihubungkan langsung ke pipeline pelayanan administrasi dan pelaporan keluhan nyata.
- Knowledge Base Terverifikasi (RAG): Seluruh jawaban panduan birokrasi mengacu pada dokumen resmi desa (Perdes, SOP layanan, dan profil desa) guna mengeliminasi halusinasi model.
- AI Complaint Intelligence: Laporan keluhan warga secara otomatis dianalisis, dikelompokkan kategorinya (Infrastruktur, Kebersihan, Keamanan, dll.), dan ditentukan tingkat urgensinya (Emergency, High, Medium, Low) untuk mempermudah triage staf desa.
- Digital Service Request: Pengajuan surat administrasi mandiri secara digital dengan nomor tiket pelacakan transparan.
- Government Dashboard & Village Analytics: Dashboard kerja perangkat desa untuk verifikasi berkas, disposisi laporan, serta visualisasi data tren masalah desa berbasis bukti (evidence-based policy).
ββββββββββββββββββββββββββββββββββββββββββ
β DesaAI Ecosystem (Web/PWA) β
βββββββββββββββββββββ¬βββββββββββββββββββββ
β
βββββββββββββββββββββββββ΄ββββββββββββββββββββββββ
βΌ βΌ
ββββββββββββββββββββββββββ ββββββββββββββββββββββββββ
β Citizen Platform β β Government Dashboard β
β (Warga Desa) β β (Perangkat Desa) β
ββββββββββββββββββββββββββ€ ββββββββββββββββββββββββββ€
β β’ AI Village Assistant β β β’ Triage & Disposisi β
β (RAG Grounded SOP) β β β’ Verifikasi Surat β
β β’ Pengajuan Surat β β β’ Update Progres Tiket β
β β’ Tracking No. Tiket β β β’ Analitik Tren Desa β
β β’ Lapor Pengaduan β β β’ Knowledge Base Admin β
ββββββββββββββ¬ββββββββββββ ββββββββββββββ²ββββββββββββ
β β
βββββββββββββββΊ [AI Core Engine] ββββββββββββββββ
- RAG Retrieval
- Intent Classification
- Severity Triage
Warga dapat berkonsultasi menggunakan bahasa sehari-hari mengenai syarat pengurusan berkas, jam buka kantor desa, dan prosedur administrasi. Jawaban divalidasi langsung dari basis data dokumen resmi desa.
Permohonan surat (Surat Keterangan Domisili, SKU, Pengantar SKCK, SKTM) dapat diajukan secara online dengan upload berkas pendukung dan menerima nomor pelacakan unik (REQ-xxx).
Warga melaporkan keluhan fasilitas (contoh: "Lampu jalan di Banjar X mati sejak 3 hari"). Sistem mengekstrak lokasi, mendeteksi kategori masalah, menghitung skor urgensi, dan membuat ringkasan eksekutif secara instan untuk perangkat desa.
Perangkat desa memiliki pusat kendali terintegrasi untuk menyetujui permohonan surat, memperbarui status pengaduan warga, serta melihat analitik sebaran masalah per Banjar/Dusun.
- Frontend & Fullstack Framework: TanStack Start (React 19 + TypeScript + Vite)
- Styling & UI: Tailwind CSS v4 + Lucide Icons
- Database & ORM: PostgreSQL 16 + Prisma ORM 7
- AI & RAG Engine: @tanstack/ai + Google Gemini API / LLM Embeddings
- Containerization: Docker & Docker Compose (Multi-platform: Windows & macOS ARM/x86)
- CI/CD & QA: GitHub Actions, ESLint, Commitlint, Husky Git Hooks
Proyek ini telah dikonfigurasi agar berjalan mulus di sistem operasi Windows maupun macOS (termasuk Apple Silicon M1/M2/M3/M4).
Menjalankan seluruh ekosistem (Aplikasi Web + Basis Data PostgreSQL) dalam kontainer:
# 1. Clone repositori
git clone https://github.com/wsantika/desa-ai.git
cd desa-ai
# 2. Siapkan file konfigurasi environment
cp .env.example .env.local
# 3. Jalankan Docker Compose
docker compose up -d --build
# 4. Buka aplikasi di browser
# Web: http://localhost:3000Menjalankan database di Docker dan frontend/backend di host laptop untuk kecepatan Vite HMR maksimal:
# 1. Jalankan container database saja
docker compose up -d db
# 2. Salin environment dan generate Prisma client
cp .env.example .env.local
npm run db:generate
# 3. Sinkronisasikan skema database
npm run db:push
# 4. Isi data awal (seed master banjar, layanan, dan RAG embeddings)
npm run db:seed
# 5. Jalankan server pengembangan
npm run devKetika rekan tim atau AI Coding Agent menarik (pull) branch pengembangan terbaru (dev atau feat/*), lakukan langkah-langkah wajib berikut secara berurutan:
# 1. Pastikan Docker / Container Database PostgreSQL Aktif
# PERINGATAN: Jika container mati, aplikasi akan melempar error ECONNREFUSED saat query database!
docker compose up -d db
# 2. Pasang dependensi jika ada penambahan package
npm install
# 3. Pastikan konfigurasi .env.local terisi
# Salin dari .env.example jika belum ada, dan isi GEMINI_API_KEY
cp .env.example .env.local
# 4. GENERATE PRISMA CLIENT (SANGAT PENTING!)
# Folder src/generated/prisma/ ada di .gitignore.
# Setiap developer / AI Agent WAJIB menjalankan ini agar TypeScript dan runtime sinkron.
npm run db:generate
# 5. Sinkronisasi Skema ke Basis Data Lokal
npm run db:push
# 6. Jalankan Database Seed (Wajib untuk Data Awal & RAG Embedding)
# Mengisi master banjar, katalog permohonan surat, user demo, dan vektor embedding dokumen regulasi desa.
npm run db:seed
# 7. Jalankan Automated Test Suite & Linter
npm run test
npm run lint
# 8. Jalankan Server Pengembangan
npm run dev- Portal Pelayanan Warga:
http://localhost:3000/- Pengaduan Keluhan Fasilitas:
http://localhost:3000/pengaduan - Permohonan Surat Administrasi:
http://localhost:3000/layanan - Asisten Cerdas Desa (RAG Chat):
http://localhost:3000/asisten
- Pengaduan Keluhan Fasilitas:
- Meja Kerja Perangkat Desa (Government Dashboard):
http://localhost:3000/admin- Meja Triage Pengaduan Cepat:
http://localhost:3000/admin/pengaduan - Verifikasi Berkas Layanan:
http://localhost:3000/admin/layanan - Analitik Masalah & Sebaran Banjar:
http://localhost:3000/admin/analitik - Manajemen Regulasi Desa (Knowledge Base):
http://localhost:3000/admin/knowledge
- Meja Triage Pengaduan Cepat:
- Target Branch: Selalu buat branch dari
devdan buka Pull Request kedev. Jangan pernah menargetkan branchmasterlangsung. - Atomic Commits: Lakukan commit secara atomik per file (
git add <file> && git commit -m "..."). Jangan menggabungkan banyak perubahan file dalam satu commit. - Format Pesan Commit: Wajib menggunakan format Conventional Commits (
feat: ...,fix: ...,docs: ...,test: ...,refactor: ...). - Validasi Kualitas: Wajib memastikan
npm run test,npm run lint, dannpm run buildberhasil sebelum mem-push kode ke repositori. - Standar Antislop: Dilarang menggunakan karakter em dash (ganti dengan titik dua, koma, titik, atau kurung), dan pastikan semua komponen visual memiliki state empty, loading, dan error.
Untuk menjaga stabilitas kode menjelang kompetisi hackathon, repositori ini menerapkan aturan percabangan ketat yang divalidasi otomatis oleh GitHub Actions CI:
master: Cabang produksi stabil. Dilarang push langsung. Hanya menerima PR dari branchdev.dev: Cabang integrasi utama pengembangan.feat/*,fix/*,chore/*: Dibuat daridevdan WAJIB membuka PR ke target branchdev.
Caution
GitHub Actions CI akan otomatis membatalkan (FAIL) Pull Request yang mencoba menggabungkan branch feat/* langsung ke master.
Setiap pesan commit dan judul Pull Request wajib mengikuti konvensi:
<type>(<scope>): <pesan dalam huruf kecil>
Contoh yang benar:
feat(complaint): implement ai classification promptfix(rag): handle empty query response gracefullydocs(prd): update kpi evaluation criteria
Dokumentasi arsitektur dan teknis mendalam tersedia di direktori docs/:
- π Product Requirements Document (PRD)
- π§ Clean Architecture & Design Principles
- π Arsitektur Sistem, Use Case & Activity Diagram
- ποΈ Database Schema & ERD
- π GitFlow, Branching Rules & Conventional Commits
- π³ Infrastruktur Docker & Setup Windows/macOS
Karya ini dikembangkan oleh Tim Desa AI dari Universitas Pendidikan Nasional (Undiknas) Denpasar:
- Benedito Nidio Da Rosa Maia Tilman
- Kadek Wahyu Santika Putra
- Renald Kevin Azzaky
APTIKOM Hackathon 2026: Smart Village Technology