Papan informasi lingkungan dan buku iuran untuk RT/RW, dibangun dengan Laravel 13 + Blade + Tailwind CSS v4 (tanpa Filament), dilengkapi REST API untuk aplikasi mobile.
- Warga (tanpa login): pengumuman, berita, kegiatan, status iuran per rumah, buku kas transparan, kuitansi digital, pembayaran online (QRIS / transfer + kode unik otomatis), serta cek status pengajuan.
- Pengurus (login di
/masuk): mencatat pembayaran iuran (tunai / door-to-door), memeriksa bukti bayar (setujui penuh / sebagian / tolak), kirim bukti ke WhatsApp warga, kelola kabar, data rumah & penghuni dengan OCR Kartu Keluarga, jenis iuran, pengeluaran kas, rekening/QRIS, dan akun admin.
- 📢 Papan Informasi Warga: Pengumuman, berita, agenda kegiatan warga, dan tombol bagikan langsung ke WhatsApp.
- 💳 Pembayaran Online & QRIS: Dukungan scan QRIS dinamis/statis, transfer bank, 3 digit kode unik otomatis, unggah bukti bayar, dan verifikasi admin (penuh / sebagian / tolak).
- 🧾 Kuitansi Digital Resmi: Nomor bukti otomatis (
KW-YYYYMM-XXXX), nominal terbilang (misal: "Lima Puluh Ribu Rupiah"), stempel "✓ LUNAS", serta siap cetak A5/A4/PDF bersih tanpa header/footer web. - 💬 Integrasi WhatsApp Instan: Kirim tanda terima resmi via WhatsApp setelah mencatat iuran, pengingat tagihan ramah bagi yang belum lunas, dan salin rekap kas bulanan 1-klik untuk grup WhatsApp RT.
- 👨👩👧👦 Pendataan Penghuni & OCR Kartu Keluarga: Rekap anggota keluarga per rumah (NIK, relasi, status hunian pemilik/kontrak), serta fitur foto/unggah Kartu Keluarga dengan pembacaan teks otomatis (OCR).
- 📊 Transparansi Kas & Ekspor Data: Buku kas umum transparan dengan saldo berjalan, serta ekspor file CSV (Excel-ready) untuk mutasi kas dan data penduduk.
- 🏠 Halaman Rumah (Portal Warga): Link pribadi per rumah untuk melihat tagihan, riwayat bayar, kuitansi, data KK, dan mengajukan surat. Link bisa diganti kapan saja oleh pengurus.
- ✉️ Surat Pengantar Online: Warga mengajukan (domisili, SKCK, nikah, usaha, tidak mampu, umum), pengurus menyetujui, nomor surat dibuat otomatis, dan surat siap cetak dengan QR cek keaslian.
- 📋 Ringkasan & Tunggakan: Dashboard pengurus (saldo, arus kas 6 bulan, progres iuran) dan daftar tunggakan per rumah dengan pengingat WhatsApp berisi rincian bulan.
- 🔍 Cocokkan Mutasi Rekening: Tempel/unggah mutasi bank, sistem mencocokkan nominal + kode unik dengan bukti bayar yang menunggu, lalu konfirmasi sekaligus.
- 🧮 Laporan Kas (LPJ): Laporan bulanan/tahunan siap cetak berisi ringkasan saldo, pemasukan per iuran, pengeluaran per kategori, dan tanda tangan ketua & bendahara. Pengeluaran kini punya kategori dan foto nota.
- 📱 REST API & Dokumentasi Scalar: Endpoint publik warga dan admin lengkap dengan spesifikasi OpenAPI interaktif di
/docs/api.
composer install
npm install
cp .env.example .env && php artisan key:generate
php artisan migrate --seed # membuat admin dari ADMIN_* di .env
php artisan storage:link # dibutuhkan untuk foto postingan, gambar QRIS, dan nota pengeluaran
npm run build # atau `npm run dev` saat mengedit view
php artisan serveInstalasi lama yang sudah pernah mengunggah foto KK: jalankan
php artisan kk:securesekali untuk memindahkan file KK dari disk publik ke penyimpanan privat.
Data demo yang realistis (nama karangan, khusus development) bersifat opsional:
php artisan migrate:fresh --seeder=DemoSeederSegera ganti kata sandi admin bawaan setelah login pertama (Pengaturan → Ganti kata sandi).
- Base URL:
/api/v1. Selalu kirim headerAccept: application/json. - Endpoint warga bersifat publik. Endpoint admin ada di
/api/v1/admin/*(ditambah/auth/medan/auth/logout) dan membutuhkan token Sanctum dariPOST /api/v1/auth/login(email,password,device_name), dikirim sebagaiAuthorization: Bearer <token>. - Nominal uang berupa integer dalam Rupiah. Periode bulanan memakai format
YYYY-MM; iuran sekali bayar punyaperiod: null. - Update yang mengunggah file (postingan, rekening bank) harus dikirim sebagai
POSTmultipart dengan_method=PUT. Flag 6DB4 boolean yang tidak dikirim saat update (is_active,is_pinned,is_popup) dianggapfalse, sama seperti form web. - Error:
401token tidak ada/tidak valid,404data tidak ditemukan,409konflik aturan bisnis (mis. menghapus rumah yang sudah punya pembayaran),422validasi (errorsper field),429terkena rate limit. - Rate limit: login 6/menit, pengiriman bukti pembayaran 10/menit.
| Area | Endpoint |
|---|---|
| Warga | GET /home, /settings, /posts, /posts/{slug}, /households, /dues-types, /bank-accounts, /dues/ledger, /dues/cashbook, /households/{household}/dues/{duesType} |
| Bukti pembayaran | POST /payment-submissions, GET /payment-submissions/{code} |
| Auth | POST /auth/login, GET /auth/me, POST /auth/logout |
| Admin | payments, payment-submissions (approve / reject / cancel / reopen, file bukti), posts, households, households/{household}/members, dues-types, expenses, bank-accounts, settings, password, users |
Dokumentasi interaktif (Scalar) tersedia di /docs/api, dirender dari spesifikasi OpenAPI yang ditulis manual di resources/openapi/v1.yaml. Deskripsi di spesifikasi ditulis dalam Bahasa Indonesia untuk developer mobile; tulis endpoint baru dengan bahasa yang sama. Perbarui file tersebut setiap kali ada endpoint yang berubah.
php artisan testSemua endpoint, aturan kas, pembayaran, kuitansi digital, OCR KK, serta ekspor CSV telah diuji dengan 70 Feature & Unit tests (100% pass).
- Controller web:
app/Http/Controllers(+Admin/). Controller API:app/Http/Controllers/Api/V1(+Admin/). - Validasi yang dipakai bersama oleh web dan API:
app/Http/Requests. Bentuk JSON:app/Http/Resources. - Aturan bisnis & keuangan yang dipakai bersama:
app/Support(PaymentSubmitter,PaymentRecorder,SubmissionReview,DuesLedger,HomeFeed). - Arah desain visual ada di
DESIGN.md.
Jika proyek ini bermanfaat bagi Anda, dukung pengembangan proyek ini melalui QRIS:
Scan QRIS menggunakan BCA, Mandiri, BRI, GoPay, OVO, DANA, ShopeePay, atau mobile banking lainnya.
Dikembangkan oleh rizalahmaddd:
- WhatsApp: +62 857-7777-5477
- GitHub: @rizalahmaddd
- Lokasi: Kota Malang, Jawa Timur, Indonesia