π
HEARTWARE DIGITAL DESA
Solusi Digital Terintegrasi untuk Desa Modern
Dari Web Desa Individual hingga Monitoring Regional 50+ Desa
Dengan Kontrol Penuh & Akses Berbeda untuk Setiap Level
π’ Web Desa Dotte - Arsitektur
Sistem Informasi & Layanan Publik Desa Berbasis Web
π°
Publikasi
Berita, Galeri, Video, Sambutan Lurah
π
Statistik
Penduduk, Infografis, Demografi
π
Layanan
Surat Online, Pengaduan, Aspirasi
π°
Bansos
Jenis, Penerima, Distribusi
π΅
APBDes
Pendapatan, Belanja, Pembiayaan
πΊοΈ
GIS & Dokumen
Peta, Dokumen Publik, UMKM
Teknologi: Laravel 10, Bootstrap, Chart.js, Leaflet.js | Database: MySQL | Storage: Local + Cloud
β¨ Web Desa - Fitur Utama
Untuk Admin Desa
- Kelola semua konten (berita, galeri, video)
- Manage data penduduk & statistik
- Approve surat online & pengaduan
- Input bansos & distribusi
- Kelola APBDes & laporan keuangan
- Kelola GIS & dokumen publik
Untuk Masyarakat
- Akses informasi desa yang lengkap
- Lihat statistik & infografis
- Ajukan surat online
- Kirim pengaduan & aspirasi
- Lihat status surat online
- Akses dokumen publik
Authentication: Multi-guard (web admin, masyarakat) | Email Notifications: Status surat, pengaduan updates
π Web Desa - API Publik
Endpoint terbuka untuk integrasi dengan sistem monitoring regional
Keamanan API
- β API Key Authentication (header: X-API-KEY)
- β Rate Limiting (60 req/min per key)
- β Data masking (no sensitive info)
Endpoint Utama
| Endpoint |
Deskripsi |
Return |
| GET /api/public/penduduk |
Data penduduk (filter by RT, RW, pekerjaan, pendidikan) |
JSON paginated |
| GET /api/public/bansos/* |
Jenis, penerima, distribusi bansos |
JSON array |
| GET /api/public/apbdes |
Pendapatan, belanja, pembiayaan desa |
JSON detail |
| GET /api/public/summary |
Ringkasan untuk monitoring (total penduduk, bansos, APBDes realisasi) |
JSON summary |
Dokumentasi: Swagger UI di /docs | Notifikasi: Email saat surat online status berubah
ποΈ Web Desa - System Design & Database
Arsitektur Sistem
βββββββββββββββββββββββββββββββββββββββββββ
β WEB DESA DOTTE β
β (Laravel 10 + MySQL) β
βββββββββββββββββββββββββββββββββββββββββββ€
β Presentation Layer (Blade + Bootstrap) β
β + Admin Panel + Masyarakat Portal β
βββββββββββββββββββββββββββββββββββββββββββ€
β Application Layer β
β Controllers β Services β Models β
β (Business Logic, Validasi, Auth) β
βββββββββββββββββββββββββββββββββββββββββββ€
β Data Access Layer β
β Repositories, Query Builders, Cache β
βββββββββββββββββββββββββββββββββββββββββββ€
β Database Layer (MySQL) β
β 15+ Tables (users, penduduk, bansos...) β
βββββββββββββββββββββββββββββββββββββββββββ
Core Tables
- π users (admin, masyarakat)
- π₯ penduduk (RT, RW, data detail)
- π jenis_bansos (tipe bansos)
- π° penerima_bansos (penerima, KK)
- π¦ distribusi_bansos (logistik)
- π° berita (konten, publish)
- πΌοΈ galeri (foto, kategori)
- π surat_online (aplikasi)
- π¬ pengaduan (aspirasi, feedback)
- π΅ apbdes (pendapatan, belanja)
- π dokumen (publik, download)
- π’ umkm (data usaha lokal)
π Web Desa - Data Flow & API Integration
Internal Data Flow
Masyarakat Admin Desa
β β
β Input (Surat, Pengaduan) β Input (Konten, Data)
βΌ βΌ
ββββββββββββββββββββββββββββββββββββββββ
β API Requests + Form Submissions β
ββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββ
β Laravel Controllers & Middleware β
β (Auth, Validation, Authorization) β
ββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββ
β Database (MySQL) β
β + File Storage (Uploads) β
ββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββ
β Notifications β
β β’ Email (Surat status, Pengaduan) β
β β’ In-app (Dashboard alerts) β
ββββββββββββββββββββββββββββββββββββββββ
API Public Endpoints (untuk Monitoring)
GET /api/public/summary β Ringkasan desa (total penduduk, bansos, APBDes)
GET /api/public/penduduk β Data demografis (filter, pagination)
GET /api/public/bansos β Distribusi bansos (per bulan, per KK)
GET /api/public/apbdes β Keuangan desa (realisasi, timeline)
Security: API Key (X-API-KEY header) + Rate Limit (60 req/min) + JWT middleware untuk internal
π Problem Statement
Saat Ini (As-Is)
- π΄ 50+ desa punya web sendiri-sendiri
- π΄ Data terpisah di 10 kabupaten berbeda
- π΄ Pemerintah provinsi tidak bisa monitor
- π΄ Tidak ada dashboard terpusat
- π΄ Sulit membandingkan performa antar desa
- π΄ Tidak ada visibility regional
Yang Kita Inginkan (To-Be)
- β
Satu dashboard pusat agregasi 50+ desa
- β
Setiap desa tetap manage web sendiri
- β
Pemerintah provinsi bisa monitor semua
- β
Pemerintah kabupaten hanya lihat desa sendiri
- β
Real-time data sync & alerts
- β
Mobile app untuk akses mudah
Solusi: Build Monitoring Heartware Digital Desa Platform + Keep Individual Desa Instances
π―
MONITORING HEARTWARE DIGITAL DESA
Platform Terpusat Monitoring 50+ Desa
Satu web yang mengagregasi data dari semua desa
Dengan kontrol akses berbeda untuk setiap level
Publik β Kabupaten β Provinsi β Heartware Digital
ποΈ Monitoring - System Design & Database
Arsitektur Multi-Layer
βββββββββββββββββββββββββββββββββββββββββββ
β MONITORING HEARTWARE DIGITAL DESA β
β (Laravel 12 + PostgreSQL + Redis) β
βββββββββββββββββββββββββββββββββββββββββββ€
β Frontend Layer (Vue.js 3) β
β β’ Public Dashboard β
β β’ Auth Dashboard (Kab/Prov) β
β β’ Admin Panel β
βββββββββββββββββββββββββββββββββββββββββββ€
β API Layer (REST + Webhooks) β
β β’ Dashboard Endpoints β
β β’ Desa Management APIs β
β β’ Sync & Alert APIs β
βββββββββββββββββββββββββββββββββββββββββββ€
β Business Logic (Services & Jobs) β
β β’ SyncService (pull dari 50+ desa) β
β β’ AggregationService (compute summary) β
β β’ AlertService (notifikasi) β
βββββββββββββββββββββββββββββββββββββββββββ€
β Cache Layer (Redis) β
β β’ Desa summaries (updated every 10 min) β
β β’ Dashboard cards & charts β
βββββββββββββββββββββββββββββββββββββββββββ€
β Database (PostgreSQL) β
β β’ 12 Tables (users, desa, api_keys...) β
β β’ Audit logs (immutable) β
βββββββββββββββββββββββββββββββββββββββββββ
Core Tables (PostgreSQL)
| Table |
Fields |
Purpose |
| users |
id, name, email, role, kabupaten_id |
Auth user (admin, kabupaten, provinsi) |
| kabupatens |
id, nama, provinsi, koordinat |
10 kabupaten/kota |
| desas |
id, nama, kabupaten_id, api_url, api_key |
50+ desa dengan API endpoint |
| desa_summaries |
desa_id, total_penduduk, total_bansos, apbdes_data, updated_at |
Cache agregat dari API desa |
| sync_logs |
id, desa_id, status, error_msg, synced_at |
Tracking setiap sync (success/fail) |
| audit_logs |
id, user_id, action, model, changes, created_at |
Immutable log semua perubahan |
π Monitoring - Data Sync & Cache Strategy
Pull-Based Sync Architecture
Every 10 Minutes (Laravel Scheduled Job)
β
βΌ
ββββββββββββββββββββββββββββββββββββ
β SyncService::syncAllDesas() β
β (Async Queue - Background Job) β
ββββββββββββββββ¬ββββββββββββββββββββ
β
ββββββββββββΌβββββββββββ
β β β
βΌ βΌ βΌ
ββββββββββ ββββββββββ ββββββββββ
βDesa A β βDesa B β βDesa N β
β API β β API β β API β
ββββββ¬ββββ ββββββ¬ββββ ββββββ¬ββββ
β β β
ββββββββββββΌβββββββββββ
β
βΌ
Validate Response
(Status 200, JSON valid)
β
βββ SUCCESS: Update desa_summaries in DB
β Cache to Redis (30 min TTL)
β Log to sync_logs (status: success)
β
βββ FAIL: Log error, Retry (3x)
If still fail β Alert to admin
Keep old cache until next success
Cache Strategy
Redis Cache Keys
desa_summary:{desa_id} β Individual desa
dashboard:all β All 50 desa summary
kabupaten:{kab_id} β Filtered per kabupaten
TTL & Invalidation
β Cache TTL: 30 minutes
β Auto refresh: Every 10 min sync
β Manual invalidate: Admin trigger
β Fallback: Old cache if sync fails
ποΈ Arsitektur Sistem Monitoring
ββββββββββββββββββββββββββββββββββββββββββββ
β MONITORING HEARTWARE DIGITAL DESA β
β (Central Dashboard + Mobile Apps) β
β Laravel 12 + PostgreSQL + Redis β
ββββββββββββββββββββββ¬ββββββββββββββββββββββ
β
βββββββββββββββΌββββββββββββββ
β β β
βΌ βΌ βΌ
ββββββββββ ββββββββββ ββββββββββ
βDesa A β βDesa B β βDesa N β
β/api/..β β/api/..β β/api/..β
ββββββββββ ββββββββββ ββββββββββ
β β β
βββββββββββββββΌββββββββββββββ
Every 10 min
Pull via API Keys
Cache to Redis
Serve Dashboard
Key Point: Pull-based sync (bukan push), data cached di Redis, toleran kalau desa offline, async queue untuk scalability
π₯ Role & Permission (1/2)
1οΈβ£ Publik (Tanpa Login)
β Dashboard summary agregat semua 50 desa
β Total penduduk, bansos, APBDes realisasi
β Daftar desa + detail (statistik, berita, galeri)
β Tidak bisa lihat nama penduduk atau data sensitif
2οΈβ£ Pemerintah Kabupaten (10 users)
β Dashboard desa-desa di kabupaten masing-masing SAJA
β Detail statistik, bansos, APBDes, surat online per desa
β Perbandingan antar desa dalam 1 kabupaten
β TIDAK bisa lihat desa kabupaten lain
3οΈβ£ Dinas Kominfo Provinsi (1 user)
β SEMUA desa di SEMUA 10 kabupaten
β Perbandingan desa dari kabupaten berbeda
β Regional KPI report + monitoring alerts
β Readonly access (tidak bisa edit)
π₯ Role & Permission (2/2)
4οΈβ£ Tim Heartware Digital (Superadmin)
β Full access: CRUD kabupaten, desa, users, API keys
β Manage system settings, sync scheduling, monitoring
β View audit logs (immutable, semua perubahan tercatat)
β Manual trigger sync, system monitoring & alerts
Access Matrix
| Feature |
Publik |
Kabupaten |
Provinsi |
Heartware |
| Dashboard Summary |
β
|
β
|
β
|
β
|
| Detail Desa Sendiri |
- |
β
|
β
|
β
|
| Lihat Semua Desa |
- |
- |
β
|
β
|
| Manage Users & API Keys |
- |
- |
- |
β
|
π Monitoring Dashboard - Fitur Utama
1. Public Dashboard (No Login)
- Hero cards: 50 desa, 250K penduduk, Rp X bansos, APBDes realisasi
- Desa grid dengan search & filter dinamis
- Berita agregat real-time dari semua desa
2. Kabupaten Dashboard
- Dashboard cards untuk desa-desa sendiri saja (filtered)
- Detail statistics, bansos, APBDes per desa
- Trend chart (6 bulan) bansos distribution
- Surat online pending list (desa sendiri)
3. Provinsi Dashboard
- ALL desa summary dari semua kabupaten
- Comparison multiple desa berbeda kabupaten
- Regional KPI report + alert management
- Readonly access (view only, no edit)
π οΈ Technology Stack
Backend
Laravel 12
PostgreSQL
Redis
- Queue System (async jobs)
- JWT Authentication
- Role-based Access Control
- Telescope (debugging)
Frontend & Mobile
Vue.js 3
Tailwind CSS
Flutter (Phase 2)
- Real-time Charts (ApexCharts)
- GIS Maps (Leaflet.js)
- Mobile Responsive
- Offline Support
Infrastructure: VPS/Kubernetes + GitHub Actions CI/CD + Sentry Error Tracking + DataDog Monitoring
βοΈ Admin Panel (Heartware Only)
Dashboard Management
- CRUD Kabupaten (10 kabupaten)
- CRUD Desa (50+ desa, assign to kabupaten)
- User Management (create, edit, delete, assign role)
- API Key Management (generate, test, rotate, usage stats)
Monitoring & Logs
- Sync Status Tracker (kapan last sync, error logs)
- Manual trigger sync (all or per desa)
- Audit logs (immutable, semua perubahan tercatat)
- System settings (mail, notification frequency)
Alerts & Notifications
- Desa offline > 1 jam β Auto alert
- Sync error > 3x consecutive β Warning
- API rate limit exceeded β Critical
π
Implementation Timeline (MVP)
Week 1-2: Foundation
Setup Laravel 12, PostgreSQL, Auth system, API key management
Week 3-4: Sync Engine
Build sync job, Redis cache, sync status tracker, error handling
Week 5-6: Backend APIs
Dashboard endpoints, desa filtering, comparison, alerts
Week 7-8: Frontend (Vue.js)
Public dashboard, desa list, detail view, components
Week 9-10: Auth Dashboard
Role-based dashboard, desa filtering, comparison view
Week 11-12: Admin Panel
CRUD operations, user management, audit logs, monitoring
Week 13-14: Testing & Deploy
Unit/E2E tests, security audit, staging & production
Total: 14 minggu (3.5 bulan) untuk MVP
π° Cost Estimation
Development (One-Time)
| Web Development (MVP) |
Rp 300 - 600 juta |
| Backend + Frontend + Admin + Testing (8-12 weeks) |
|
Infrastructure (Monthly)
| VPS Server (2-4 vCPU, 4-8GB RAM) |
Rp 5 - 8 juta |
| Managed PostgreSQL |
Rp 1 - 2 juta |
| CDN + Monitoring + Sentry |
Rp 1 - 2 juta |
| Total/Bulan |
Rp 7 - 12 juta |
π Total Tahun Pertama: Rp 600 juta - 1.2 miliar
β¨ Key Benefits
π
Skalabilitas
Dari 50 desa bisa scale ke 200+ tanpa redesign
π
Security
JWT, role-based access, audit logs, encryption
β‘
Performance
Redis cache, async queue, toleran offline
π±
Multi-Channel
Web dashboard + mobile apps (Phase 2)
π
Insights
Comparison, trends, alerts, real-time monitoring
π€
Collaboration
Multi-level access, granular permissions
π Next Steps
Immediate (Minggu Depan)
- Approve architecture & tech stack (Laravel 12 + PostgreSQL)
- Finalize budget & timeline dengan stakeholders
- Identify team leads (10 kabupaten, provinsi)
- Setup project repository (GitHub)
- Kick-off meeting dengan tim development
Phase 1 Execution
- Setup infrastructure (VPS, PostgreSQL, Redis)
- Start Foundation (DB schema, auth, models)
- Build sync engine dengan async queue
- Iterate dengan 5 pilot desa (test real API)
- Launch ke semua 50+ desa
Phase 2 Planning
- Mobile app development (Flutter)
- Advanced reporting & analytics
- Predictive alerts & anomaly detection
β
Questions & Discussion
Terima kasih atas perhatian
Mari kita wujudkan Heartware Digital Desa untuk Indonesia! π
π§ Contact: admin@heartware.id
π Dashboard: monitoring.heartware.id
π» GitHub: github.com/heartware/monitoring-desa
1 / 21