Langsung ke konten
AFM Studio
  • Halaman

    AFM Studio
  • Karya
  • Lab
  • Tentang
  • CV
  • Kontak
  • Proyek

    AksaraPerpustakaan pengetahuan Otorita IKN yang bisa dicari, dengan server memeriksa akses setiap pembaca di tiga tingkat
  • Daily TaqwaSistem presensi salat anti-manipulasi untuk ~2.000 pegawai OIKN di Masjid Negara IKN
  • Lantara v2Mesin perizinan Otorita IKN tempat administrator menambah jenis izin baru dari layar, tanpa developer
  • eKiosk IKNDua ruang kendali untuk Nusantara: konten kios dan pelacakan bus live dengan estimasi kedatangan yang menilai dirinya sendiri
  • E-Monev IKNPlatform pemantauan pembangunan Nusantara selama 23 tahun, melacak progres triwulan setiap unit terhadap 24 KPI
  • JDIH OIKNPortal dokumen hukum publik OIKN, dengan alur penerbitan terkendali dan ringkasan AI yang tidak pernah keluar dari server
  • Jejak PenanamanAplikasi absen acara penanaman pohon IKN yang membuktikan peserta hadir di lokasi lewat selfie ber-geofence
  • Dashboard SAKTIPipeline malam dan dashboard yang menggantikan unduhan anggaran manual di keenam satker OIKN
  • DoseRxKalkulator dosis untuk 127 obat yang membulatkan dosis ke tablet dan sirup yang dijual apotek Indonesia
  • CubiqPelatih speedcubing dengan timer setara kompetisi dan solver buatan sendiri untuk 8 puzzle utama
  • ScimotionPerpustakaan sains interaktif berisi 86 artikel, masing-masing dijelaskan bersama animasi yang bisa dikendalikan pembaca
  • WA Daily Scrum BotBot WhatsApp yang menagih laporan standup tim 14 orang dan menandai tugas yang macet berhari-hari

↑ ↓ untuk berpindah · Enter untuk membuka · Esc untuk menutup

KPR Simulator

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

Tangkapan layar
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, atau new Date() di lib/. 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.ts dan lib/rate/effective.ts tidak 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 di data/gaps.json: rasio LTV, tenor FLPP, uang muka minimum, SBUM, NPOPTKP per kabupaten, biaya bank, dan snapshot suku bunga dasar. data/sbdk/snapshots.json dikirim 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 dan Intl.NumberFormat menangani tampilan. check:offline memastikan 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-pages macet di deployment_in_progress selama sekitar sepuluh jam tanpa perubahan apa pun dari sisi saya, lalu berhasil deploy dalam empat belas detik pada 7 Agustus 2026. Diagnosisnya dicatat di CLAUDE.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

Beranda
Hitung Angsuran
Batas Anda
KPR Subsidi
Bandingkan
Biaya Awal

Sedang merekrut, atau membangun hal serupa?

Saya terbuka untuk posisi full-time dan proyek freelance tertentu.