Lantara v2
Mesin perizinan Otorita IKN tempat administrator menambah jenis izin baru dari layar, tanpa developer

- sektor perizinan yang diatur
- 31
- kode usaha KBLI dimodelkan
- ~2.200
- tipe isian, tanpa kode frontend per izin
- 12
- modul: izin online dan antrean tatap muka
- 2
Di halaman ini
Masalahnya
Otorita IKN menerbitkan izin di 31 sektor yang diatur, mulai dari kesehatan dan pendidikan sampai lingkungan hidup. Di kebanyakan sistem pemerintah, setiap jenis izin di-hardcode: alur, formulir, dan daftar dokumennya ditulis langsung oleh developer. Setiap kali regulasi berubah, kodenya harus diubah dan aplikasinya dirilis ulang. Di kota yang masih dibangun, regulasi berubah terus.
Ada tiga kelompok pengguna. Warga dan pelaku usaha mengajukan izin, staf pemerintah memeriksanya, dan administrator instansi menetapkan aturannya. Aturan itu datang dari undang-undang dan keputusan menteri, bukan dari engineer. Jadi kebutuhan utamanya mudah dirumuskan: administrator tanpa latar belakang teknis harus bisa membuat jenis izin baru, lengkap dengan alur, formulir, dan daftar dokumennya, cukup dari layar.
Yang saya bangun
Setiap jenis izin adalah data
Saya memodelkan izin sebagai konfigurasi: sektor, jenis izin, tahapan alur, isian formulir, dan persyaratan dokumen. Menambah jenis izin sama dengan mengisi data. Administrator bisa menyusun izin kesehatan enam tahap dengan dua belas dokumen wajib dan formulir khusus, tanpa ada yang menyentuh kode.
Saat seseorang mengajukan izin, sistem menyimpan salinan formulir persis seperti saat itu. Kalau administrator mengubah formulirnya kemudian, pengajuan yang sedang diperiksa tetap memakai pertanyaan yang dulu diisi. Pemeriksaan tetap adil dan audit tetap tepat.
Hak akses mengikuti alur
Hak akses staf dibentuk dari alurnya sendiri, satu untuk setiap tahap dan jenis izin. Kodenya tidak pernah mengecek peran tetap seperti "verifikator". Begitu administrator menambah jenis izin, slot pemeriksa untuk izin itu langsung tersedia.
Tenggat yang terlihat oleh staf
Setiap tahap punya tenggat dalam jam, dan setiap jenis izin punya total dalam hari kerja. Sebuah proses latar menghitung ulang tenggat itu dengan kalender libur nasional dan mengirim peringatan saat berkas mulai terlambat. Di antrean pemeriksa, kartu berubah dari kuning ke merah saat tenggat makin dekat. Staf bisa menyetujui, mengembalikan, atau menolak berkas lewat pintasan keyboard.
Pemeriksaan yang tertib di kantor yang sibuk
Pemeriksa bisa mengklaim sebuah berkas supaya tidak dikerjakan dua orang sekaligus. Klaim yang menganggur lepas sendiri, dan setiap keputusan mencatat siapa yang membuatnya. Permintaan revisi dibuat per isian, jadi pemohon melihat persis apa yang perlu diperbaiki di samping jawaban lamanya. Beberapa izin butuh persetujuan dua dinas teknis. Saya membatasi pemeriksa per tahap, sehingga satu orang tidak bisa menyetujui kedua tahap pemeriksaan yang sama.
Antrean tatap muka untuk Mal Pelayanan Publik
Setelah mesin perizinan berjalan, ada celah yang jelas. Sistem ini menangani pengajuan online yang makan waktu berhari-hari, tapi tidak menangani warga yang datang ke Mal Pelayanan Publik dan mengambil nomor antrean. Saya merancang dan membangun MPP Antrean, modul antrean terpisah dengan data dan hak aksesnya sendiri. Modul ini mencakup tiket kios, check-in QR, pemilahan di loket, serta panggil, panggil ulang, dan layani, semuanya diperbarui langsung. Warga yang sudah booking online tapi datang terlambat masuk ke antrean tatap muka sesuai jam kedatangan, tanpa kehilangan tiketnya.
Hasilnya
Keempat fase pembangunan yang direncanakan selesai dalam sekitar tiga minggu, disusul pengamanan, perbaikan aksesibilitas, dan modul antrean. Sistem ini memuat sekitar 2.200 kode usaha KBLI dan bisa dijalankan dengan satu perintah, lengkap dengan data contoh. Siapa pun bisa memindai kode QR di izin yang terbit untuk memastikan keasliannya, tanpa login. Situs staging sudah bisa diakses publik, dan versi produksinya akan berjalan di server Otorita IKN sendiri.
Di balik layarDetail teknis untuk engineer
- Lima model inti menyimpan konfigurasi setiap izin:
Sektor,PermitType,WorkflowStage,FormField, danDocumentRequirement. - Jawaban formulir disimpan sebagai JSON field dan divalidasi saat runtime terhadap skema yang aktif. Versi skema disalin ke setiap pengajuan.
- Hak akses berupa string yang dibentuk otomatis, misalnya
verifikasi_teknis:izin_posyandu. Kelas permission DRF mencocokkannya dengan tahap pengajuan saat ini. Tidak ada enum peran. - SLA:
sla_hoursper tahap,sla_daysper jenis izin, disapu oleh task Celery Beat dengan kalender hari kerja. Pintasan antrean:j/kuntuk berpindah,a/r/duntuk setujui, revisi, atau tolak. <DynamicForm>mengambilFormField[]dan membangun skemazodsaat runtime untuk dua belas tipe isian, termasuk NIK, NPWP, nomor telepon, lokasi peta, dan unggah berkas.- Halaman publik memakai tema biru yang imersif; ruang kerja setelah login dibuat tenang dan padat untuk staf yang memproses lima puluh berkas sehari.
- MPP Antrean adalah Django app tersendiri tanpa foreign key ke domain perizinan. Status live dikirim lewat lapisan WebSocket Django Channels yang sudah ada. Pembagian kuota online dan tatap muka ditegakkan saat reservasi.
docker compose upmenjalankan migrasi, memuat ~2.200 data KBLI, mengisi 46 contoh izin di tiga sektor beserta loket antrean demo, dan membuat superadmin.- 13 Django app, 43 model, sekitar 30.000 baris Python dan TypeScript, 241 commit dalam kurang lebih tiga minggu.
Tangkapan layar
Sedang merekrut, atau membangun hal serupa?
Saya terbuka untuk posisi full-time dan proyek freelance tertentu.