Aplikasi web modern Single Page Application (SPA) berbasis Vite, React 19 (JSX), Tailwind CSS v4, React Router DOM, dan LocalStorage Data Engine.
🌐 Live Demo URL: https://system-rt-zalde.vercel.app/
Perumahan Elite terdiri dari total 20 unit rumah (15 rumah dihuni tetap & 5 rumah kontrak / sementara / kosong):
- Tarif Iuran Bulanan:
- Iuran Satpam: Rp 100.000 / bulan
- Iuran Kebersihan: Rp 15.000 / bulan
- Aturan Penagihan:
- Penghuni Tetap: Ditagih rutin setiap bulan.
- Rumah Kontrak / Sementara: Ditagih hanya jika terdapat penghuninya (Status Rumah Dihuni).
- Opsi Pembayaran: Mendukung pembayaran rutin 1 bulan maupun 1 Tahun Sekaligus.
- Pengeluaran RT:
- Rutin: Gaji 2 satpam (Rp 1.500.000/bln), Listrik pos satpam (Rp 150.000/bln).
- Insidental: Perbaikan jalan, perbaikan selokan, perawatan taman, dll.
Berikut adalah visualisasi Diagram Relasi Entitas (ERD) dan skema relasi basis data yang diterapkan pada System-RT :
erDiagram
PENGHUNI {
int id PK
string nama_lengkap
string foto_ktp
string status_penghuni "Tetap | Kontrak"
string nomor_telepon
string status_pernikahan "Sudah Menikah | Belum Menikah"
}
RUMAH {
int id PK
string nomor_rumah "Blok A1 - B10 (Unique)"
string status_huni "Dihuni | Tidak Dihuni"
int penghuni_id FK "Nullable"
}
RIWAYAT_PENGHUNI {
int id PK
int rumah_id FK
int penghuni_id FK
string status_penghuni
date tanggal_masuk
date tanggal_keluar "Nullable"
string catatan "Nullable"
}
PEMBAYARAN {
int id PK
int rumah_id FK
int penghuni_id FK
string jenis_iuran "Satpam (100k) | Kebersihan (15k)"
int bulan "1 - 12"
int tahun
float jumlah
string status "Lunas | Belum Lunas"
date tanggal_bayar "Nullable"
}
PENGELUARAN {
int id PK
string kategori "Gaji Satpam | Kebersihan | Listrik | Perbaikan"
string keterangan
float jumlah
date tanggal
}
PENGHUNI ||--o{ RUMAH : "menempati (1-to-Many)"
RUMAH ||--o{ RIWAYAT_PENGHUNI : "mencatat histori"
PENGHUNI ||--o{ RIWAYAT_PENGHUNI : "memiliki histori"
RUMAH ||--o{ PEMBAYARAN : "menagih iuran"
PENGHUNI ||--o{ PEMBAYARAN : "membayar iuran"
-
Penghuni(Entitas Utama Warga):id(PK, Int) — ID unik penghuninama_lengkap(String) — Nama lengkap wargafoto_ktp(String) — URL SVG/Base64 foto KTP terverifikasistatus_penghuni(String) —Tetap/Kontraknomor_telepon(String) — Nomor Kontak / WhatsAppstatus_pernikahan(String) —Sudah Menikah/Belum Menikah
-
Rumah(Entitas 20 Unit Hunian):id(PK, Int) — ID unik unit rumahnomor_rumah(String, Unique) — Nomor unit (Blok A1–A10 & B1–B10)status_huni(String) —Dihuni/Tidak Dihunipenghuni_id(FK, Nullable) — ID penghuni aktif menempati
-
RiwayatPenghuni(Log Histori Hunian):id(PK, Int) — ID log historirumah_id(FK, Int) — Relasi ke tabelRumahpenghuni_id(FK, Int) — Relasi ke tabelPenghunitanggal_masuk&tanggal_keluar— Tanggal mulai & selesai huni (nulljika masih aktif)catatan(String, Nullable) — Catatan/keterangan pergantian penghuni
-
Pembayaran(Log Pemasukan Iuran Warga):id(PK, Int) — ID transaksi iuranrumah_id&penghuni_id(FK) — Relasi unit rumah & penghunijenis_iuran(String) —Satpam(100k) /Kebersihan(15k)bulan&tahun(Int) — Periode tagihanjumlah(Float) — Nominal iuranstatus(String) —Lunas/Belum Lunas
-
Pengeluaran(Log Biaya RT):id(PK, Int) — ID transaksi pengeluarankategori(String) — Gaji Satpam, Listrik, Kebersihan, Perbaikanjumlah(Float) — Nominal biayatanggal(Date) — Tanggal transaksi
- Mengelola Penghuni (
/penghuni):- Tambah & Ubah data penghuni.
- Atribut: Nama Lengkap, Foto KTP (dengan preview & uploader), Status (Tetap/Kontrak), Nomor Telepon, Status Pernikahan (Sudah Menikah/Belum Menikah).
- Mengelola Rumah & Riwayat (
/rumah):- Tampilan List/Grid 20 Unit Rumah (Status: Dihuni / Tidak Dihuni).
- Menghubungkan & mengubah penghuni rumah via modal Atur Penghuni (termasuk input
Catatan Riwayat). - Pencatatan otomatis log histori
RiwayatPenghunisaat pergantian warga (menutup tanggal keluar warga lama dan membuka tanggal masuk warga baru). - Modal Riwayat modern menampilkan timeline rekam jejak penghuni (Aktif/Terdahulu), periode huni, dan fitur hapus riwayat.
- Mengelola Pembayaran (
/pembayaran):- Input pembayaran iuran Satpam (100k) & Kebersihan (15k).
- Opsi pembayaran 1 Bulan atau Paket Lunas 1 Tahun Sekaligus.
- Matriks filter pembayaran per bulan, tahun, & jenis iuran.
- Mengelola Pengeluaran (
/pengeluaran):- Catat pengeluaran kas RT rutin & insidental berdasarkan kategori, nominal, tanggal, & rincian deskripsi.
- Laporan Keuangan (
/laporan&/):- Grafik Tren Keuangan 1 Tahun (Recharts): Menampilkan Pemasukan, Pengeluaran, & Akumulasi Saldo Sisa Kas RT.
- Laporan Rekapitulasi Keuangan & detail rincian pemasukan/pengeluaran per bulan.
- Fitur Cetak / Ekspor PDF Laporan Keuangan.
cd c:/xampp/htdocs/system-rt
npm install
npm run devBuka browser di: http://localhost:5173 atau port aktif yang ditampilkan.
| Item Pengujian | Status | Rincian / Hasil Verifikasi |
|---|---|---|
| Linting Test (Oxlint) | ✅ Passed | 0 errors, 0 warnings pada 11 files (92 rules). Bebas dari dead code & missing hooks dependencies. |
| Build Production (Vite) | ✅ Passed | Bundle terkompilasi dalam 984ms tanpa error bundling. |
| CI/CD Pipeline | ✅ Active | GitHub Actions Workflow (.github/workflows/ci.yml) otomatis memvalidasi lint & build di setiap push/PR. |
| Live Deployment | ✅ Online | system-rt-zalde.vercel.app |
| Runtime Browser Test | ✅ Passed | 0 JS console errors & 0 runtime exception pada seluruh 6 rute navigasi. |