KPR Simulator
Kalkulator KPR bebas iklan yang menunjukkan nasib cicilan setelah bunga tetap habis, dan di mana cicilan jebol

- angka regulasi dikutip dari sumbernya
- 27
- angka tak diketahui ditolak dengan namanya
- 7
- request jaringan; angka tetap di tautan
- 0
- bunga efektif dari flat 5% selama 20 tahun
- 7,95%
Di halaman ini
Masalahnya
KPR adalah komitmen keuangan terbesar yang akan diambil kebanyakan keluarga Indonesia. Bank menawarkan bunga tetap selama dua atau tiga tahun, setelah itu bunganya mengambang. Keluarga yang menganggarkan sekitar Rp3,2 juta sebulan bisa mendapati cicilannya menjadi Rp4,8 juta di tahun keempat. Semua kalkulator yang saya temukan menganggap bunganya sama selama dua puluh tahun, sehingga risiko terbesar dalam pinjaman itu tidak terlihat.
Masalahnya tidak berhenti di situ. Bunga "flat" dan "efektif" sama-sama diiklankan, keduanya tidak bisa dibandingkan langsung, dan kebanyakan peminjam tidak tahu mana yang sedang ditawarkan. Kalkulator hanya menampilkan angka tanpa cara hitungnya. Hampir semua kalkulator KPR di hasil pencarian juga dibuat untuk menjaring calon nasabah bagi bank atau portal properti.
Yang saya bangun
Pertanyaan yang bisa dibawa ke bank
Saya mengubah pertanyaan yang dijawab kalkulator. "Sanggupkah saya membayar Rp3,2 juta?" menjadi "Pinjaman saya jebol di bunga, misalnya, 13,4%. Bank saya tidak memublikasikan marginnya di atas suku bunga dasar, jadi berapa?" Halaman ambang mencari bunga mengambang yang tepat saat cicilan melewati porsi penghasilan yang Anda pilih. Dua kasus tepi punya jawaban tersendiri: sudah melewati batas walau bunganya nol, dan masih terjangkau di atas bunga tertinggi yang dicari.
Setiap rupiah bisa ditelusuri
Uang selalu disimpan sebagai bilangan bulat rupiah. Pembulatan menjadi langkah tersendiri di cara hitung, lengkap dengan konvensi yang dipakai. Di langkah itulah kalkulator biasanya meleset beberapa rupiah dari rekening koran bank, jadi saya membuatnya terlihat. Mesin hitungnya tidak pernah membaca tanggal hari ini; bulan selalu diberikan dari luar. Input yang sama memberi hasil yang sama selamanya, dan itu penting saat seseorang mencocokkannya dengan tagihan bank enam bulan kemudian.
Dua perhitungan terpisah saling memeriksa
Bunga efektif dihitung dua kali, oleh dua rutin yang tidak berbagi kode. Kalau keduanya memakai fungsi bantu yang sama, bug-nya pun bisa sama. Pemeriksaan ini juga mengoreksi brief saya sendiri. PRD menyebut bunga flat 5% kira-kira setara efektif 9%. Itu berlaku untuk tenor satu sampai lima tahun, tapi untuk dua puluh tahun hasil hitungnya 7,95%. Aplikasi menampilkan angka hasil hitungan, dan brief-nya yang saya perbaiki.
Angka yang tidak diketahui ditolak dengan menyebut namanya
Setiap angka yang diatur regulasi, seperti bunga subsidi, batas harga, batas penghasilan, dan tarif pajak, disimpan bersama dasar hukumnya, tautan sumber, dan tanggal verifikasinya. Build gagal kalau ada angka tanpa kutipan. Ketika rasio LTV, uang muka minimum, dan tenor KPR subsidi tidak bisa saya telusuri ke peraturan yang masih berlaku, saya tidak menebak. Ketiganya masuk ke tujuh celah yang dinyatakan, yang disebut dan dijelaskan aplikasi dalam dua bahasa. Warna kuning tua menandai rentang bunga mengambang dan setiap nilai asumsi, dan merah menandai batas keterjangkauan. Tidak ada elemen lain yang memakai kedua warna itu.
Angka Anda tidak pernah keluar dari browser
Penghasilan dan jumlah pinjaman disimpan di bagian tautan setelah tanda pagar, yang tidak pernah dikirim browser ke server. Situs ini tidak membuat request jaringan dan tidak memakai analitik atau iklan. Sebuah pengecekan saat build memastikan situs hasil ekspor tidak memanggil apa pun dari luar.
Hasilnya
KPR Simulator sudah live, terbuka untuk umum, dan bebas iklan, dengan bahasa Indonesia sebagai bahasa utama dan Inggris sebagai kedua. Aplikasi ini menampilkan jadwal cicilan lengkap dengan pita kuning tua di bagian yang bunganya belum diketahui. Isinya mencakup bunga ambang, perbandingan flat dan efektif, serta jalur KPR subsidi FLPP dengan pengecekan yang menyebut kriteria mana yang tidak terpenuhi. Ada juga total biaya kepemilikan dan simulasi pelunasan sebagian. Halaman parameter memuat ke-27 angka beserta kutipannya. Saya membangunnya sendiri dalam dua hari pada Agustus 2026.
Aplikasi ini tidak pernah memberi saran, membuat peringkat, atau menyebut nama bank. Di antarmukanya tertulis bahwa ini bukan nasihat keuangan, bahwa bunga mengambang tidak diketahui dan tidak dipublikasikan, bahwa biaya bank berbeda-beda, bahwa persetujuan kredit tidak dimodelkan, dan bahwa angkanya perlu dikonfirmasi ke bank.
Di balik layarDetail teknis untuk engineer
- Mesin hitungnya
(inputs, product, rulePacks) => Schedule, tanpa React, DOM, ataunew Date()dilib/. Periode selalu berupa bilangan bulat{ year, month }. - Amortisasi anuitas dan flat, pelunasan dipercepat dengan penalti, penurunan bunga efektif, dan bisection untuk ambang (
lib/rate/threshold.ts) semuanya ditulis tangan.lib/rate/irr.tsdanlib/rate/effective.tstidak berbagi kode; solver IRR dipakai di tes dan di angka yang ditampilkan. - Flat 5% setara efektif 9,11%–9,32% untuk tenor satu sampai lima tahun, dan 7,95% untuk dua puluh tahun.
- Rule pack ada di
data/rules/(batas FLPP, tarif BPHTB dan PPh, ditelusuri ke Kepmen PUPR, Permen PKP, dan UU pajak), divalidasi dengan Zod. Ketujuh celah ada didata/gaps.json: rasio LTV, tenor FLPP, uang muka minimum, SBUM, NPOPTKP per kabupaten, biaya bank, dan snapshot suku bunga dasar.data/sbdk/snapshots.jsondikirim kosong karena aturan tidak menyebut nama bank. - Bunga FLPP 5% bersandar pada pernyataan kementerian, belum pada pasal yang ditelusuri sampai ayatnya, dan halaman parameter menyebutkannya.
- Riset membalik isi PRD: Bank Indonesia sudah melonggarkan LTV sampai 100% dan, untuk rumah pertama, menyerahkan batas maksimumnya ke kebijakan bank.
- Asersi konservasi dan tipe trace di-commit sebelum loop amortisasi, dan validator aturan sebelum data aturan apa pun.
- 1.614 asersi di 14 berkas tes berjalan sekitar dua detik; 1.186 di antaranya sweep konservasi atas berbagai tenor, bunga, dan pokok pinjaman.
- Empat dependensi produksi: Next.js 14.2.15 (
output: 'export'), React 18.3.1, React DOM, dan Zod 3.23.8. Tanpa library keuangan, mata uang, tanggal, atau grafik; elevasi jadwal berupa SVG buatan tangan danIntl.NumberFormatmenangani tampilan.check:offlinememastikan tidak ada request eksternal. - Enam rute (
hitung,ambang,subsidi,banding,biaya,parameter) di dua bahasa, plus beranda. JS yang dikirim sekitar 964 KB mentah, di atas target 200 KB gzip. actions/deploy-pagesmacet dideployment_in_progressselama sekitar sepuluh jam tanpa perubahan apa pun dari sisi saya, lalu berhasil deploy dalam empat belas detik pada 7 Agustus 2026. Diagnosisnya dicatat diCLAUDE.md.- Satu putaran UX di akhir memadatkan formulir sebelas kontrol menjadi tiga langkah bernama.
- Sekitar 9.500 baris kode dan 37 commit pada 6–7 Agustus 2026.
Tangkapan layar
Sedang merekrut, atau membangun hal serupa?
Saya terbuka untuk posisi full-time dan proyek freelance tertentu.