Lewati ke konten utama / Skip to main content
catatan·28 Juni 2026·7 menit

RangkiangRegulasi.id: Aplikasi Android untuk Membaca Regulasi, Offline, Terenkripsi, Tanpa Iklan

Teks asli, UU perubahan, dan putusan MK diterbitkan sebagai dokumen terpisah, dan pembaca harus merangkainya sendiri. Catatan membangun aplikasi Android yang menggabungkan semuanya menjadi satu naskah terkonsolidasi, offline penuh, dengan sumber resmi dan tanggal konsolidasi.

#android#kotlin#jetpack-compose#regulasi#hukum#room-database#kuhp#play-store

Dari Dokumen Tersebar Menjadi Satu Naskah

Masalah: Naskah Hukum Tersebar

Teks asli, undang-undang perubahan, dan putusan Mahkamah Konstitusi diterbitkan sebagai dokumen terpisah. Untuk mengetahui bunyi pasal yang berlaku, pembaca harus merangkai sendiri beberapa naskah. Prosesnya lambat dan rawan keliru.

Seorang advokat membuka 4-5 tab untuk satu pasal: teks dasar, UU perubahan pertama, UU perubahan kedua, putusan MK yang memperluas tafsir, lalu menyimpulkan sendiri bunyi yang berlaku. Kalikan itu dengan 624 pasal KUHP baru (UU 1/2023) plus seluruh KUHAP.

Solusi: Satu Naskah Terkonsolidasi

RangkiangRegulasi.id menggabungkan seluruhnya menjadi satu naskah yang berlaku. Setiap dokumen mencantumkan sumber resmi dan tanggal konsolidasi, sehingga yang terbaca adalah bunyi pasal sebagaimana berlaku saat ini. Edisi pertamanya adalah “Bundle Hukum Pidana Umum”: KUHP (UU 1/2023) dan KUHAP dalam satu aplikasi.

Teks bersifat referensi, bukan naskah resmi negara, bukan nasihat hukum. Untuk keperluan resmi atau litigasi, selalu rujuk naskah asli dari sumber resmi.

Ilustrasi: Pasal 77 KUHAP

Objek praperadilan dalam Pasal 77 KUHAP awalnya terbatas: sah-tidaknya penangkapan, penahanan, penghentian penyidikan, dan ganti rugi. Lalu datang Putusan MK No. 21/PUU-XII/2014 yang memperluasnya: penetapan tersangka, penggeledahan, dan penyitaan juga bisa di-praperadilan-kan.

Mahasiswa yang membaca KUHAP cetakan 2010 tidak akan tahu perluasan ini. Advokat yang membaca peraturan.go.id akan melihat teks asli tanpa catatan putusan. Semua harus merujuk ke putusan MK secara terpisah, dan itu hanya untuk satu pasal.


Pendekatan: Single Developer, Native Android, Offline-First

Native, Bukan Web atau Cross-Platform

Keputusan pertama: native Android dengan Kotlin dan Jetpack Compose. Bukan React Native, bukan PWA, bukan Flutter.

Alasannya: offline adalah fitur utama, bukan fallback. Aplikasi harus bisa diakses di ruang sidang yang tidak ada sinyal, di desa dengan koneksi intermiten, di pesawat saat advokat mereview pasal sebelum landing. Room v5 dengan FTS4 memberi full-text search di perangkat tanpa perlu server.

KUHP dan KUHAP Lebih Dulu

Edisi pertama fokus ke hukum pidana umum karena:

  1. Momentum: KUHP baru (UU 1/2023) berlaku 2 Januari 2026, jadi semua orang perlu membaca ulang
  2. Cakupan: 624 pasal + KUHAP = volume cukup untuk menguji arsitektur aplikasi
  3. Kompleksitas konsolidasi: KUHP 2023 menggantikan Wetboek van Strafrecht 1918, sehingga ada diskontinuitas historis yang perlu dimodelkan

Arsitektur Teknis

Lapisan Teknologi Alasan
Bahasa Kotlin 2.3.x Type-safe, ringkas, bahasa resmi Android
UI Jetpack Compose (BOM latest) Deklaratif: UI = fungsi state, bukan imperative
Navigasi Compose Navigation Single-Activity, type-safe route
Async Coroutines + Flow First-class dengan Compose, tidak perlu RxJava
DI Hilt + KSP Compile-time: crash karena missing binding ketahuan sebelum runtime
Database Room v5 + FTS4 (units_fts) Full-text search pasal, ayat, penjelasan dalam satu query
Preferences DataStore Coroutine-based, lebih ringan dari SharedPreferences
Backup SAF + AES-GCM (PBKDF2-HMAC-SHA256) Ekspor/impor anotasi terenkripsi + tombstone; user pegang kuncinya sendiri
Monetisasi Sponsor + donasi (Intent) Tanpa iklan; AdMob dievaluasi dan eksplisit ditolak
Build Gradle Kotlin DSL, AGP 9, Product Flavors 5 flavor: kuhp, kuhap, ketenagakerjaan, arbitrase, bundle; multi-edisi dari satu codebase

Fitur yang Sudah Jalan

  1. Naskah terkonsolidasi: teks dasar, seluruh perubahan, dan catatan putusan MK disimpan berlapis. Data dikemas sebagai JSON dari pipeline ETL, lalu diparse ke Room Database saat aplikasi pertama kali dijalankan.
  2. Navigasi berjenjang Buku → Bab → Bagian → Pasal, bukan flat list, sehingga struktur asli UU dipertahankan.
  3. Pencarian full-text dengan Room FTS4. Hasilnya disorot di teks dan layar otomatis menggulir ke sana.
  4. Penanda dan catatan per unit. User bisa menandai pasal penting dan menambahkan catatan pada level pasal, ayat, huruf, atau angka. Catatan tampil sebagai chip (📝) di bawah unit terkait dan disimpan lokal, tanpa akun dan tanpa server.
  5. Pengaturan baca untuk ukuran huruf, jenis huruf (sans/serif), dan mode gelap/terang.
  6. Setiap pasal mencantumkan sumber resmi, tanggal konsolidasi, dan instrumen pengubah.
  7. Aplikasi otomatis membuka regulasi terakhir dan menggulir ke posisi bacaan terakhir.
  8. Seleksi dan salin memakai toolbar bawaan Android (SelectionContainer), bukan mesin seleksi kustom.

Beberapa Keputusan Desain

FTS4 vs Search Server

Alternatif yang dipertimbangkan: Algolia, Typesense, atau ElasticSearch yang di-host. Ditolak karena:

  • Offline-first adalah non-negotiable
  • Volume teks hukum pidana ~5-8 MB, dan FTS4 SQLite sudah cukup
  • Tidak perlu indexing server untuk query praperadilan NEAR penyitaan

Backup dengan Enkripsi Client-Side

Anotasi user (catatan, penanda) adalah data pribadi. Saya tidak ingin menyimpannya di server. Solusi: SAF (Storage Access Framework) untuk ekspor/impor file, AES-GCM dengan PBKDF2 passphrase untuk enkripsi. User memilih file, set passphrase, dan anotasinya terenkripsi sebelum meninggalkan perangkat.

Tanpa Iklan

Pertanyaan ini selalu muncul setiap saya bilang “gratis tanpa iklan.” Jawabannya model sponsor: institusi atau firma yang ingin mendukung tanpa memengaruhi konten. Tidak ada banner, interstisial, maupun tracking. AdMob dievaluasi dan eksplisit ditolak karena model perhatian tidak cocok dengan konteks teks hukum referensi.


Yang Belum & Tantangan

Yang Masih Dalam Pipeline

  • iOS & iPadOS. SPIKE selesai (27 Jun 2026) di MBA M2 + iPad Pro 11” fisik. Stack: KMP-core + SwiftUI. Room tetap di :core dengan BundledSQLiteDriver (FTS4 + MATCH native terverifikasi). Jalur body-pasal pakai UITextView-Representable untuk justify teks + seleksi lintas-paragraf + VoiceOver. Sync engine ditunda ke pasca-iOS-v1.
  • Perluasan ke UU lain: UU Arbitrase (30/1999, format units[] sudah siap via flavor arbitrase), UU Perseroan Terbatas, UU Pasar Modal, UU Ketenagakerjaan
  • Distribusi konten OTA + freemium: update naskah tanpa update aplikasi
  • Cross-referencing pasal: “pasal ini terkait dengan pasal X dalam UU Y”

Tantangan

  • Konsolidasi manual. Tidak ada API legal Indonesia. Naskah dikonsolidasi manual, pasal per pasal, dari LN/TLN ke JSON struktural via pipeline ETL.
  • Verifikasi akurasi. Satu kesalahan penempatan ayat bisa fatal secara hukum. Butuh sistem peer-review internal sebelum rilis publik.

Penutup

RangkiangRegulasi.id adalah eksperimen tentang seberapa jauh seorang praktisi hukum bisa membangun alatnya sendiri, mulai dari memahami masalah di meja kerja, menulis kode, sampai merilis di Play Store.

Saat ini aplikasinya sudah live. Jika Anda mahasiswa hukum, advokat, atau aparatur sipil yang tertarik mencobanya, kunjungi rangkiangregulasi.id.