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

JDIH OIKN

Portal dokumen hukum publik OIKN, dengan alur penerbitan terkendali dan ringkasan AI yang tidak pernah keluar dari server

Tangkapan layar
dokumen dikirim ke layanan AI eksternal
0
tingkat akses, diperiksa di setiap unduhan
3
peran sesuai alur persetujuan Direktorat Hukum
5
halaman publik dan admin
36
Di halaman ini

Masalahnya

Otorita IKN adalah lembaga pemerintah yang baru, dan menerbitkan produk hukumnya sendiri: peraturan, keputusan, perjanjian kerja sama, dan lainnya. Sebelum sistem ini ada, dokumen-dokumen itu tersebar di email dan di drive lokal. Masyarakat tidak punya cara untuk menemukan peraturan resmi OIKN. Tidak ada proses review yang terkendali, sehingga siapa pun yang punya akses server bisa menerbitkan apa saja. Akses ke dokumen sensitif diatur secara informal, tanpa catatan siapa melihat apa. Laporan tahunan yang diwajibkan Peraturan Kepala OIKN Nomor 14 Tahun 2025 disusun manual.

JDIH adalah Jaringan Dokumentasi dan Informasi Hukum nasional, dan setiap instansi wajib punya portal yang sesuai. OIKN membutuhkan portal dengan sisi publik untuk masyarakat dan alur kerja terkendali untuk Direktorat Hukum.

Yang saya bangun

Peran yang mengikuti Direktorat Hukum

Rencana awalnya ada empat peran. Dalam praktiknya dibutuhkan lima, agar sesuai dengan cara kerja direktorat. Admin Direktorat Hukum dan walidata bisa menyetujui dokumen, dan walidata juga menangani permintaan akses. Admin lain bisa membuat dan mengubah dokumen, tapi tidak pernah bisa menyetujuinya. Pembagian ini muncul bersamaan dengan single sign-on, saat jelas siapa yang sebenarnya memberi persetujuan di organisasi. Setiap aksi admin menyatakan peran mana yang boleh memakainya, dan halaman review tertutup bagi siapa pun yang tidak berwenang menyetujui.

Tingkat akses diperiksa saat unduhan

Setiap dokumen bersifat terbuka, terbatas, atau tertutup. Dokumen terbatas tetap muncul di pencarian, dengan tombol untuk meminta akses. Walidata menyetujui permintaan itu, dengan tanggal kedaluwarsa jika perlu. Sebelum menampilkan tombol, halaman menanyakan ke server apa yang boleh dilakukan orang ini: mengunduh, meminta akses, atau login. Tautan file tidak pernah dikirim ke orang yang tidak berhak membukanya, dan setiap akses serta unduhan tercatat.

Ringkasan AI yang tidak pernah keluar dari server

Awalnya saya merilis ringkasan dokumen lewat layanan AI eksternal, untuk membuktikan fitur ini layak dibangun. Sehari kemudian, saya membangun ulang pipeline-nya agar berjalan penuh di server OIKN sendiri, karena mengirim dokumen hukum pemerintah ke layanan pihak ketiga adalah risiko kepatuhan. Pipeline ini mengambil teks dari setiap PDF, memilih kalimat kunci menjadi ringkasan berbahasa sederhana, dan menandai bidang hukumnya. Sepanjang bulan berikutnya, saya menambahkan cara untuk memeriksa kualitasnya. Staf bisa menulis ringkasan koreksi untuk dokumen mana pun, dan job mingguan membandingkan hasil ringkasan dengan koreksi itu untuk mendeteksi penurunan kualitas.

Peta peraturan yang saling mengubah

Sebuah job latar membaca judul dokumen baru untuk mencari frasa rujukan hukum, seperti "mencabut Perka No. 14 Tahun 2022". Job ini mencari dokumen yang dirujuk dan mengusulkan tautan untuk dikonfirmasi admin. Tautan yang sudah dikonfirmasi membentuk pohon peraturan publik yang menunjukkan dokumen mana mencabut, mengubah, atau melaksanakan dokumen lain.

Statistik dihitung semalam

Dashboard admin dan halaman statistik publik tidak pernah menghitung dokumen secara langsung. Job malam mengisi tabel ringkasan, jadi kedua halaman tetap cepat meski koleksinya terus bertambah. Halaman publik menampilkan heatmap aktivitas setahun, jenis dokumen yang sedang ramai, dan bidang hukum yang paling banyak dibaca. Kalau tabel malam masih kosong, dashboard membaca log aktivitas, jadi tidak pernah menampilkan angka nol yang keliru.

Hasilnya

JDIH OIKN sudah berjalan di produksi. Direktorat Hukum memakainya untuk menyusun, mereview, dan menerbitkan dokumen, dan portal publiknya menyajikan dokumen terbuka untuk siapa saja. Pegawai login lewat single sign-on OIKN, sedangkan pengguna luar login dengan email dan kata sandi. Di luar yang diwajibkan, saya menambahkan bookmark, notifikasi saat status permintaan akses berubah, rating bintang yang dimoderasi dan tampil di beranda, serta filter pencarian yang bisa dibagikan dengan ekspor CSV hingga 2.000 baris. Saya membangunnya antara Maret dan Juni 2026. Rilis terakhir yang tercatat adalah v1.10.0 di bulan Mei, dan pemeriksaan kualitas ringkasan dirilis di bulan Juni.

Di balik layarDetail teknis untuk engineer
  • Peran: superadmin, admin_jdih, admin_anggota, walidata, registered. admin_jdih menyetujui lewat properti can_approve. Permission class seperti IsAdminOrAbove, IsWalidata, dan IsSuperAdmin ada di satu permissions.py.
  • Tingkat akses terbuka / terbatas / tertutup ditegakkan di endpoint unduhan. /accesses/check/ mengembalikan tombol yang tepat tanpa membuka file. Task Celery mencabut akses yang kedaluwarsa.
  • Ringkasan awalnya memakai Gemini Flash (v1.8.0) lalu pindah offline di v1.9.0: ekstraksi pdfplumber, ringkasan ekstraktif dengan sumy dan nltk, serta classifier bidang hukum berbobot kata kunci.
  • Loop kualitas: model RingkasanEvalRun, field dan editor ringkasan gold, glosarium istilah hukum ke bahasa sederhana, task weekly_ai_eval, dan perintah benchmark evaluate_ai_summaries. Superadmin bisa membuat ulang ringkasan yang usang dengan progress bar berbasis Redis.
  • detect_relations mencocokkan pola rujukan seperti "mencabut Perka No. 14 Tahun 2022" dan membuat RelationCandidate. Relasi yang dikonfirmasi tampil di /pohon-peraturan.
  • refresh_statistik_harian mengisi StatistikHarian dan StatistikDokumen setiap malam lewat Celery Beat, dengan fallback ke ActivityLog.
  • OIDC Keycloak lewat mozilla-django-oidc memetakan klaim unit, NIP, dan nama. Sesi OIDC tetap di server dan menerbitkan JWT untuk frontend; pengguna publik memakai SimpleJWT dengan email dan kata sandi.
  • Perjanjian kerja sama (PKS dan MoU) punya dua nama pihak dan tidak punya nomor dokumen, jadi memakai serializer kondisional dan jalur slug terpisah.
  • Pencarian memakai SearchVectorField PostgreSQL dengan indeks GIN. sync_berita_ikn mengimpor berita dari portal IKN, dideduplikasi berdasarkan ID eksternal.
  • 7 Django app, 25 model, 90 pola URL, 9 task Celery, 36 route frontend, 76 file sumber frontend, sekitar 15.800 baris kode frontend, 100 commit backend dan 91 commit frontend dari 7 Maret sampai 24 Juni 2026.

Tangkapan layar

Beranda
Beranda Jenis Dokumen Hukum
Beranda Dokumen Terbaru
Beranda User Feedback
Dokumen Hukum List
Dokumen Detail

Sedang merekrut, atau membangun hal serupa?

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