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.
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:
- Momentum: KUHP baru (UU 1/2023) berlaku 2 Januari 2026, jadi semua orang perlu membaca ulang
- Cakupan: 624 pasal + KUHAP = volume cukup untuk menguji arsitektur aplikasi
- 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
- 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.
- Navigasi berjenjang Buku → Bab → Bagian → Pasal, bukan flat list, sehingga struktur asli UU dipertahankan.
- Pencarian full-text dengan Room FTS4. Hasilnya disorot di teks dan layar otomatis menggulir ke sana.
- 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.
- Pengaturan baca untuk ukuran huruf, jenis huruf (sans/serif), dan mode gelap/terang.
- Setiap pasal mencantumkan sumber resmi, tanggal konsolidasi, dan instrumen pengubah.
- Aplikasi otomatis membuka regulasi terakhir dan menggulir ke posisi bacaan terakhir.
- 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
: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, 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.