Faraid Visualizer
Kalkulator waris Islam yang menelusuri setiap bagian ke sumber rujukannya, membandingkan KHI dan Syafi'i klasik

- sumber rujukan di balik setiap aturan
- 35
- contoh soal lolos untuk KHI dan Syafi'i
- 61
- set aturan: KHI dan empat mazhab
- 5
- data warisan yang dikirim keluar perangkat
- 0
Di halaman ini
Masalahnya
Pembagian warisan menurut hukum Islam (faraid) sering memicu sengketa keluarga di Indonesia. Hanya sedikit orang di luar kalangan santri dan ulama yang bisa menghitungnya sendiri. Kalkulator online yang ada terlalu menyederhanakan, diam-diam memilih satu mazhab, atau hanya mengeluarkan angka tanpa langkah hitungnya. Orang lebih mudah menerima hasil yang alasannya bisa mereka ikuti.
Di bawahnya ada masalah kedua. Kompilasi Hukum Islam (KHI, Inpres No. 1/1991) dan fikih Syafi'i klasik berbeda di beberapa titik yang mengubah hasil. Di antaranya ahli waris pengganti (KHI Pasal 185), ke mana sisa harta pergi kalau tidak ada lagi ahli waris yang berhak, dan pemotongan harta bersama sebelum harta warisan dibagi. Kebanyakan kalkulator mencampuradukkan keduanya.
Yang saya bangun
Setiap bagian menunjuk ke sumbernya
Saya menulis mesin hitungnya sebagai paket Python mandiri tanpa dependensi dari luar. Setiap hasil mencatat ahli waris, bagiannya, aturan yang dipakai, dan sumber aturan itu. Daftar rujukan saya susun sebelum logika apa pun: 35 sumber, termasuk 14 pasal KHI, rujukan kitab klasik, ayat Al-Qur'an, dan hadis. Al-Qur'an dan hadis disimpan sebagai rujukan, tidak pernah sebagai kutipan teks. Aturan tanpa sumber akan gagal di tes dan tidak bisa dirilis.
KHI dan Syafi'i adalah dua aturan terpisah
Saya memodelkan setiap mazhab sebagai aturan tersendiri, dengan pilihan dan rujukannya masing-masing. Keluarga yang sama bisa dihitung dengan keduanya secara berdampingan, jadi pengguna melihat persis di mana hasilnya berbeda. Misalnya, cucu dari anak yang meninggal lebih dulu mendapat warisan menurut KHI, tapi tidak menurut Syafi'i klasik. Aturan Hanafi, Maliki, dan Hanbali juga tersedia, dengan label Beta.
Kalau kasusnya belum tercakup, mesin mengatakannya
Beberapa susunan keluarga punya sub-kasus yang rumit, seperti sebagian kasus kakek bersama saudara, yang belum dicakup mesin. Di situ mesin berhenti dan menampilkan "susunan ini belum didukung". Mesin tidak pernah menebak dengan kasus yang paling mirip. Halaman menampilkannya sebagai jawaban biasa, dan situs ini menyatakan bahwa hasilnya bersifat edukatif, bukan putusan hukum. Pembulatan juga ditampilkan. Jumlah bagian bisa selisih satu sen dari harta warisan, dan memindahkan satu sen itu adalah keputusan fikih, jadi selisihnya ditunjukkan.
Mesin Python yang sama berjalan di browser
Versi pertamanya berupa situs Django dengan database. Data warisan termasuk data paling pribadi, jadi saya pindah ke situs statis yang tidak pernah menerimanya. Browser mengunduh runtime Python dan menjalankan paket yang sama dengan yang dipakai server. Tidak ada data yang keluar dari perangkat. Sebuah kasus bisa dibagikan karena seluruh isinya disimpan di tautan. Pemuatan pertama makan waktu sekitar 20 detik, jadi formulir sudah bisa diisi sementara mesin dimuat di latar. Sebuah pembaruan belakangan menambahkan pemilih pohon keluarga terpandu untuk mode Personal, menggambar hubungan di sekitar orang yang meninggal, bukan mengisi formulir, tapi mengirim data yang persis sama ke mesin.
Tes menentukan boleh rilis atau tidak
Proses deploy menjalankan bank validasi dan tes API. Proses itu juga memastikan tidak ada panggilan model AI di kode perhitungan, dan bahwa situs hasil build memuat mesinnya. Satu kegagalan saja menahan rilis. Setiap aturan baru masuk bersama sumber dan tesnya dalam perubahan yang sama.
Hasilnya
Faraid Visualizer sudah live dan gratis di GitHub Pages, tanpa backend dan tanpa akun. Aplikasi ini menunjukkan siapa yang terhalang dan oleh siapa, setiap bagian pasti, bagaimana sisa harta dibagi, dan setiap rujukannya, dalam bentuk teks dan diagram. KHI dan Syafi'i klasik lolos semua 61 contoh soal di bank validasi, ditambah satu set kasus terpisah tempat kedua mazhab berbeda pendapat. Mode Profesional mengekspor PDF lengkap dengan jejak rujukannya, dalam bahasa Indonesia atau Inggris, untuk notaris dan staf pengadilan agama. Saya membangunnya sendiri dalam dua tahap: mesin, perpindahan ke situs statis, dan ekspor PDF pada Juli hingga awal Agustus 2026. Pembaruan berikutnya pada September menambahkan pemilih pohon keluarga terpandu dan mendesain ulang tampilan derivasinya.
Di balik layarDetail teknis untuk engineer
faraid_engineberisi sekitar 2.400 baris Python 3.12 murni denganFractiondanDecimaldari stdlib, tanpa import Django dan tanpa dependensi pihak ketiga. Setiap fungsi mengembalikan{heir, share, rule_applied, source_id}.- Pipeline delapan tahap mencakup 17 jenis hubungan ahli waris di lima objek
RulesetConfig. Pipeline ini menangani hajb, furud, asabah (sisa, dibagi 2:1), 'aul, dan radd. sources.pyadalah commit mesin yang pertama: 14 pasal KHI, 11 rujukan klasik, 3 penunjuk ayat, 3 hadis beserta perawinya, 2 komentar yurisprudensi, 2 ijmak.source_idyang tidak dikenal langsung memunculkan error.- Kasus yang tidak didukung memunculkan
UnsupportedConfiguration. Al-jadd wa al-ikhwah memakai muqasamah Zaid dan tetap berhenti pada sub-kasus akdariyya dan mu'adda. faraid_webadalah lapisan tanpa Django untuk validasi, label dwibahasa, serialisasi, dan tata letak PDF, sehingga API hanya menjadi jalur transport. Pyodide (di-hosting sendiri, tanpa CDN) menjalankan paket yang sama di browser, dan kedua deployment diuji menghasilkan keluaran yang identik per byte. Port ke TypeScript ditolak karena seluruh bank tes harus dibuktikan ulang dalam bahasa kedua.- Hasil pengukuran: runtime Python sekitar 9 MB, sekitar 20 detik sampai mesin siap saat cache kosong, sekitar 0,8 detik saat cache hangat, RAM 50–100 MB. Renderer PDF reportlab (sekitar 2,9 MB) hanya dimuat saat ekspor.
- State kasus disimpan di URL, dan setiap nilai yang dibaca dari URL divalidasi ulang sebagai input yang berpotensi berbahaya. Batas
MAX_COUNT=50per ahli waris mencegah payload jahat membuat aritmetika KPK meledak. Input rusak mengembalikan 400; kasus yang tidak didukung mengembalikan 422. - Urutan CI: bank validasi, tes kontrak API, grep kedua paket untuk import LLM atau pemanggilan model, pengecekan bahwa situs hasil build memuat bundle mesin, lalu publish.
- Hitung ulang live berjalan dengan debounce 250 ms dan membuang respons yang datang tidak berurutan. Di mode Personal, nominal rupiah menjadi jawaban utama; mode Profesional tetap mengutamakan pecahan, karena itulah yang dicocokkan dengan pokok masalah.
- Tiga route statis:
/,/pelajari/(penjelasan berdiri sendiri tentang cara kerja perhitungannya) dan/references/(daftar rujukan dan daftar celah cakupan). - Tampilan derivasinya,
EstateFlow, menggambar harta warisan sebagai pita proporsional yang terbelah di setiap tahap pipeline, dengan rujukan tampil langsung di dalamnya; ini menggantikan diagram simpul-tepi React Flow sebelumnya, yang kini bukan lagi dependensi frontend. KomponenShareCardterpisah menggambar sebuah hasil, termasuk siapa yang tidak mendapat bagian dan kenapa, ke sebuah kanvas dengan palet terang tetap untuk dibagikan ke aplikasi chat. - Styling memakai sistem token CSS custom-property tulisan tangan tanpa UI kit atau pustaka ikon; sebuah desain ulang belakangan membuka kembali palet dan jenis huruf sekali (warna Nila/Kunyit, Newsreader dan Noto Naskh Arabic) lalu membekukannya lagi.
- Sekitar 308 tes: 291 tanpa Django plus 17 tes kontrak API. Bank validasi berisi 61 contoh soal (batas minimum di PRD 50), 10 kasus beda KHI dan Syafi'i, 16 kasus mazhab Beta, dan 26 kasus validator. 6 endpoint API, 2 model.
- 131 commit oleh satu orang, 4 Juli sampai 28 September 2026, dengan jeda panjang antara pertengahan Agustus dan akhir September sebelum tahap terakhir menambahkan pemilih pohon keluarga dan desain ulang tampilan derivasi.
Tangkapan layar
Sedang merekrut, atau membangun hal serupa?
Saya terbuka untuk posisi full-time dan proyek freelance tertentu.