RangkiangRegulasi.id: Aplikasi Android untuk Membaca Regulasi — Offline, Terenkripsi, Tanpa Iklan
Teks asli, UU perubahan, dan putusan MK diterbitkan sebagai dokumen terpisah — pembaca harus merangkai sendiri. Cerita membangun aplikasi Android yang menggabungkan semuanya menjadi satu naskah terkonsolidasi, offline penuh, dengan sumber resmi dan tanggal konsolidasi.
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 — proses yang 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. Lipat gandakan 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 — dimulai dari edisi “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
Mengapa Native, Bukan Web atau Cross-Platform?
Keputusan pertama: native Android dengan Kotlin dan Jetpack Compose. Bukan React Native, bukan PWA, bukan Flutter.
Alasannya sederhana: 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.
Mengapa KUHP dan KUHAP Dulu?
Edisi pertama fokus ke hukum pidana umum karena:
- Momentum: KUHP baru (UU 1/2023) berlaku 2 Januari 2026 — semua orang perlu membaca ulang
- Cakupan: 624 pasal + KUHAP = volume cukup untuk menguji arsitektur aplikasi
- Kompleksitas konsolidasi: KUHP 2023 menggantikan Wetboek van Strafrecht 1918 — ada diskontinuitas historis yang menarik untuk 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 di Uji Tertutup
- Naskah terkonsolidasi — teks dasar + seluruh perubahan + catatan putusan MK disimpan berlapis. Data dikemas sebagai JSON dari pipeline ETL, diparse ke Room Database saat pertama kali aplikasi dijalankan.
- Navigasi berjenjang — Buku → Bab → Bagian → Pasal. Bukan flat list. Struktur asli UU dipertahankan.
- Pencarian full-text — Room FTS4, hasil disorot di teks. Auto-scroll ke hasil pencarian.
- Penanda & 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. Disimpan lokal — tidak ada akun, tidak ada server.
- Pengaturan baca — Ukuran huruf, jenis huruf (sans/serif), mode gelap/terang.
- Sumber terlacak — Tiap pasal mencantumkan sumber resmi, tanggal konsolidasi, dan instrumen pengubah.
- Riwayat terakhir — Aplikasi otomatis membuka regulasi terakhir dan menggulir ke posisi bacaan terakhir.
- Seleksi & salin native — Menggunakan toolbar bawaan Android (
SelectionContainer), bukan mesin seleksi kustom.
Keputusan Desain yang Menarik
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 — FTS4 SQLite lebih dari 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 — Kok Bisa?
Pertanyaan yang selalu muncul saat bilang “gratis tanpa iklan.” Model sponsor: institusi atau firma yang ingin mendukung tanpa memengaruhi konten. Bukan iklan — tidak ada banner, tidak ada interstisial, tidak ada 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
:coredenganBundledSQLiteDriver(FTS4 +MATCHnative terverifikasi). Jalur body-pasal pakaiUITextView-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 flavorarbitrase), 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 — dari memahami masalah di meja kerja, menulis kode, hingga merilis di Play Store.
Saat ini dalam uji tertutup (closed testing) di Google Play Store. Jika Anda mahasiswa hukum, advokat, atau aparatur sipil yang tertarik menjadi tester awal — kunjungi rangkiangregulasi.id.