E-Monev IKN
Platform pemantauan pembangunan Nusantara selama 23 tahun, melacak progres triwulan setiap unit terhadap 24 KPI

- peta jalan, 2022 sampai 2045, di satu tempat
- 23 tahun
- KPI dipantau di lima tahap pembangunan
- 24
- periode laporan, masing-masing PDF, Word, atau Excel
- 5
- tingkat peran, dari super admin sampai tamu
- 6
Di halaman ini
Masalahnya
Indonesia sedang membangun ibu kota baru dari nol, dalam lima tahap dari 2022 sampai 2045. Puluhan unit kerja menjalankan kegiatan secara bersamaan, di bidang infrastruktur, tata kelola, lingkungan, dan sosial. Setiap kegiatan punya anggaran, target, dan capaian triwulannya sendiri.
Sebelum ada E-Monev, koordinator tidak punya satu tampilan untuk melihat progres lintas unit. Laporan triwulan disusun manual. Selisih antara anggaran dan realisasi sering baru ketahuan saat review sudah terlambat. Peta jalan 23 tahun itu tidak punya rumah digital. Tidak ada catatan resmi tentang siapa yang menyetujui atau menolak laporan dan apa alasannya. Unit juga masih bisa mengirim atau mengubah angka setelah periode pelaporan ditutup.
Yang saya bangun
Enam peran dalam satu urutan
Ada enam peran, dari super admin sampai tamu, dengan tingkat deputi dan eselon di antaranya. Saya menaruh semuanya dalam satu daftar berurutan. Setiap pemeriksaan hak akses cukup menanyakan satu hal: apakah peran orang ini minimal setinggi ini? Menambah aksi baru yang dilindungi cukup satu baris. Urutan yang sama menentukan akses di API sekaligus halaman yang tampil di browser.
Laporan triwulan bergerak lewat tahap tetap
Setiap kegiatan punya laporan progres triwulan berisi rencana, realisasi, dan file bukti. Laporan bergerak dari draf ke terkirim, lalu disetujui atau dikembalikan untuk revisi. Hanya perpindahan yang sah yang bisa terjadi, dan setiap perpindahan mencatat siapa, kapan, dan alasannya. Laporan hanya bisa diubah selama masih draf, jadi halamannya terkunci begitu laporan dikirim. Rencana operasional dulu punya tahap persetujuan sendiri. Saya menghapusnya, karena persetujuan yang sesungguhnya ada di laporan triwulan, dan dua antrean review berarti kerja dua kali.
Tenggat yang ditegakkan server
Administrator mengatur kapan jendela pelaporan dan perencanaan dibuka dan ditutup, dan bisa memperpanjang tenggat untuk satu unit. Server memeriksa jendela itu di setiap penulisan data. Perubahan yang terlambat ditolak, bahkan kalau seseorang memanggil sistemnya secara langsung. Banner di dashboard hanya memberi tahu apa yang sudah ditegakkan server.
Login yang menemukan unit Anda sendiri
Pegawai login lewat single sign-on IKN. Sistem itu mengirim nama jabatan sebagai teks biasa, seperti "Direktur Data dan Kecerdasan Buatan", dan tidak bisa diubah untuk mengirim ID unit. Saya menulis pencocok yang merapikan nama jabatan dan menilai kemiripan katanya untuk menemukan unit kerja yang tepat di setiap login. Tidak ada yang perlu memetakan pegawai ke unit secara manual.
Masalah dan impor data yang terstruktur
Awalnya, masalah dalam sebuah kegiatan ditulis di satu kolom catatan bebas. Saya memberinya catatan tersendiri. Satu kegiatan bisa punya banyak isu, masing-masing dengan status, unit yang membantu, dan riwayat tindak lanjut. Impor massal juga diperlakukan sama: admin mengunggah spreadsheet, melihat semua error tanpa ada data yang tersimpan, lalu menyimpan semuanya sekaligus.
Hasilnya
E-Monev mencakup seluruh kerangka pemantauan IKN: 24 KPI di lima tahap, delapan prinsip, dan enam aspek, sepanjang peta jalan 23 tahun. Dashboard empat tab memberi setiap peran tampilannya sendiri atas data yang sama, dengan ringkasan eksekutif, analitik, grafik keterkaitan KPI, dan peta semua kegiatan yang punya lokasi. Laporan tersedia bulanan, triwulanan, semesteran, tahunan, dan akhir tahap, dalam format PDF, Word, atau Excel. Backend-nya sudah di produksi, dan frontend-nya sudah dikemas untuk deploy dengan cara yang sama. Saya membangun kedua sisinya antara Mei dan Juli 2026, dan cakupannya tumbuh jauh melampaui spesifikasi awal.
Di balik layarDetail teknis untuk engineer
- Peran
super_admin, admin, deputi_pp, eselon_1, eselon_2, guesttersusun dalam listROLE_HIERARCHY;User.has_min_role()membandingkan posisinya. Permission class sepertiIsSuperAdmindanCanApproveROmembungkus satu perbandingan itu. TriwulanProgressmembawaReviewStatus(Draft, Submitted, Need Revision, Approved) dengan petaVALID_TRANSITIONS.transition_to()memvalidasi perpindahan dan menulis barisReviewHistory.is_editablehanya bernilai true saat Draft.ReportingWindow,PerencanaanWindow, danRencanaOperasionalWindow, ditambahReportingWindowExtensionuntuk pengecualian per unit. Pemeriksaan direporting_window/services.pymelemparValidationErrordari serializer dan view.- SSO Keycloak: backend menukar auth code antar-server dan menerbitkan pasangan SimpleJWT sendiri, jadi frontend tidak butuh library OIDC.
apps/users/oidc.pymenghapus diakritik, memetakan awalan jabatan ke awalan unit, dan menilai kemiripan kata untuk menemukanUnitOrganisasidanUnitKerja. - Master data pindah dari primary key bigint ke UUID dengan migrasi maju di tempat untuk database yang sudah berjalan, lalu dibersihkan dari inkonsistensi riwayat migrasi.
- Model
IsudanTindakLanjutdengan many-to-manyunit_pembantu.BulkMixinmenyediakanbulk_validate(uji coba) danbulk_commit(atomik) dengan resolusi foreign key per kategori. AuditMixinmenambahkancreated_by,updated_by, dan timestamp di banyak model;AuditModelViewSetMixinmengisinya otomatis.MasterDataContextdi frontend awalnya memakai localStorage, lalu pindah ke API dengan antarmuka yang sama, lalu dibuat lazy denganuseMasterCategories().- Peta Leaflet dimuat lewat
next/dynamicdenganssr: false. Grafik KPI memakai React Flow. Laporan memakai WeasyPrint, python-docx, dan openpyxl. - CI menerbitkan image backend ke GHCR setiap push ke main, dengan gerbang
pip-audit. - 9 Django app, sekitar 29 model, 30 route frontend, 225 file sumber frontend, sekitar 9.760 baris Python dan 29.300 baris TypeScript, 82 commit backend dan 145 commit frontend sejak 20 Mei 2026.
Tangkapan layar
Sedang merekrut, atau membangun hal serupa?
Saya terbuka untuk posisi full-time dan proyek freelance tertentu.