An institutional public information governance system for Bakorwil III Malang, providing an accountable workflow for citizen document requests, administrative reviews, and legally compliant dispute resolution.Sistem tata kelola keterbukaan informasi publik untuk Bakorwil III Malang, menyediakan alur terstruktur untuk permohonan dokumen warga, peninjauan administratif, dan penyelesaian sengketa berbasis regulasi.
Co-engineered in Laravel with Michael (@maonev). While foundational layouts, public routing, and deployment were collaboratively delivered, my primary engineering ownership focused on the core request state machine, objection escalation pipeline, role-based access control (RBAC), and authentication security layers.Dikembangkan bersama Michael (@maonev) menggunakan Laravel. Sementara perancangan tata letak dasar, routing publik, dan deployment dikerjakan secara kolaboratif, tanggung jawab utama saya berfokus pada mesin status permohonan, alur eskalasi keberatan, kontrol akses berbasis peran (RBAC), dan lapisan keamanan autentikasi.
The system was built as a proof of concept during our engagement, ahead of adoption on the agency's own infrastructure. A fully working demo remains available on Vercel.Sistem ini dibangun sebagai bukti konsep selama masa penugasan kami, sebelum diadopsi ke infrastruktur instansi. Demo yang berfungsi penuh masih dapat diakses di Vercel.
Regulatory Mandate: Establishing Autonomous Public GovernanceMandat Regulasi: Mewujudkan Tata Kelola Informasi Mandiri
Under Indonesia's Public Information Disclosure Law (UU 14/2008), public agencies are legally obligated to operate a dedicated Pejabat Pengelola Informasi dan Dokumentasi (PPID), providing transparent channels for citizen document requests and formal administrative dispute appeals.Berdasarkan Undang-Undang Keterbukaan Informasi Publik (UU 14/2008), badan publik berkewajiban secara hukum untuk menyelenggarakan layanan Pejabat Pengelola Informasi dan Dokumentasi (PPID), menyediakan kanal transparan bagi permohonan informasi warga dan mekanisme penyelesaian sengketa resmi.
Bakorwil III Malang previously routed information governance through an external affiliate platform, the East Java Super Corridor (EJSC). Agency leadership required establishing a dedicated internal platform tailored specifically to the agency's operational protocols.Bakorwil III Malang sebelumnya menjalankan operasional PPID melalui platform eksternal, East Java Super Corridor (EJSC). Pimpinan instansi menginstruksikan pemisahan sistem guna menghadirkan platform digital mandiri yang selaras dengan protokol kelembagaan internal.
This engineering initiative was executed concurrently alongside the transformation of the agency's primary institutional web portal.Inisiatif rekayasa perangkat lunak ini dijalankan secara beriringan dengan transformasi portal resmi utama Bakorwil III Malang.
- Publish institutional PPID profiles, operational SOPs, and public regulationsMenerbitkan profil PPID institusional, SOP operasional, dan regulasi publik
- Facilitate citizen document request submissions with verified credential attachmentsMemfasilitasi pengajuan permohonan informasi warga beserta dokumen verifikasi identitas
- Empower administrative officers to review, approve, or issue legally justified rejectionsMemfasilitasi petugas untuk meninjau, menyetujui, atau menerbitkan penolakan berlandaskan hukum
- Enable structured administrative dispute and objection escalation for rejected requestsMenyediakan alur eskalasi keberatan dan sengketa administratif bagi permohonan yang ditolak
- Maintain a comprehensive audit trail accessible to citizens and government officersMenyimpan jejak audit komprehensif yang dapat dipantau bersama oleh pemohon dan petugas
Relational State Machine: Managing the Request LifecycleMesin Status Relasional: Mengelola Siklus Hidup Permohonan
The entire business domain is governed by a unified relational schema. Requests transition through four distinct lifecycle states, while objections are modeled as child entities referencing their rejected parent records.Seluruh alur dikelola melalui model relasional terpadu. Permohonan diproses melalui empat status siklus hidup, sementara pengajuan keberatan dimodelkan sebagai entitas yang merujuk langsung ke catatan induk yang ditolak.
SubmittedDiajukan
Citizen submits dossier with credentialsPemohon mengirimkan berkas dan dokumen identitas
Under ReviewDalam Peninjauan
Assigned officer examines document validityPetugas memeriksa kelayakan dan keabsahan berkas
Approved & FulfilledDisetujui & Diterbitkan
Information or document access is grantedInformasi atau salinan dokumen resmi diserahkan
Formal RejectionPenolakan Resmi
Mandatory statutory justification requiredWajib disertai alasan dan dasar hukum tertulis
Dispute EscalationPengajuan Keberatan
Linked child record reinitiating the review pipelineEntri sengketa terhubung yang memulai kembali alur peninjauan
Mandatory statutory justification on denialKewajiban pencatatan alasan penolakan
Server-side validation strictly enforces comprehensive textual justification (up to 1,000 characters) whenever status transitions to rejected, purging the field on valid approvals.Validasi server mewajibkan pencatatan alasan substantif (hingga 1.000 karakter) setiap kali status diubah menjadi ditolak, serta membersihkan field tersebut pada status selain penolakan.
Strict dispute integrity guardIntegritas dan batasan eskalasi sengketa
The objection interface exclusively authorizes the authenticated citizen who owns the rejected dossier, backed by controller validation that prevents duplicate disputes.Antarmuka keberatan secara eksklusif hanya mengotorisasi warga pemilik berkas yang bersangkutan, didukung validasi controller yang mencegah pengajuan keberatan ganda.
Encapsulated query scopesEnkapsulasi query scope model
Dedicated Eloquent scopes modularize status and type filtering, powering real-time citizen progress metrics and administrative dashboard analytics seamlessly.Scope Eloquent terdedikasi memodularisasi pemfilteran status dan tipe data, menopang metrik dasbor warga serta analitik administratif secara efisien.
Dual-Interface Architecture: Citizen Services & Operational GovernanceArsitektur Antarmuka Ganda: Layanan Publik & Tata Kelola Operasional
Citizen Services PortalPortal Layanan Warga
Structured intake with identity verificationFormulir permohonan terstruktur dengan verifikasi identitas
Validated submission forms capturing applicant legal identity, organizational affiliation, direct contact channels, and secure identity credential uploads.Formulir terstandarisasi untuk merekam identitas legal pemohon, afiliasi lembaga, kontak langsung, serta unggahan berkas identitas terverifikasi.
Real-time monitoring dashboardDasbor pemantauan status real-time
Visual overview monitoring the aggregate volume and progress of requests across pending, processing, approved, and rejected stages.Ikhtisar visual untuk memantau volume dan perkembangan permohonan dari tahap diajukan, diproses, disetujui, hingga ditolak.
Comprehensive request dossier and historyArsip riwayat dan detail berkas permohonan
Detailed audit archive tracking submitted dossiers, uploaded documents, explicit statutory rejection statements, and associated dispute states.Catatan audit terperinci mencakup berkas yang diajukan, dokumen pendukung, pernyataan penolakan resmi, serta status eskalasi sengketa.
Protected dispute submission workflowMekanisme pengajuan keberatan terproteksi
Context-sensitive administrative objection form accessible exclusively for the applicant's own rejected requests with single-submission enforcement.Formulir keberatan kontekstual yang hanya dapat diakses untuk berkas milik pemohon yang ditolak dengan proteksi submit tunggal.
PPID Operations CenterPusat Operasional PPID
Role-Based Access Control (RBAC)Kontrol akses berbasis peran (RBAC)
Dedicated middleware enforces tiered administrative privileges, admitting authorized staff while issuing HTTP 403 Forbidden to unauthorized sessions.Middleware terdedikasi menegakkan hak akses bertingkat, mengizinkan petugas berwenang dan mengembalikan HTTP 403 Forbidden untuk akses tanpa otorisasi.
Administrative dossier inspectionPemeriksaan berkas dan manajemen status
Multi-criteria filtering by lifecycle status, instant search across citizen names and institutions, and inline status transition controls.Pemfilteran multi-kriteria berdasarkan status siklus hidup, pencarian instan nama atau institusi, serta kontrol perubahan status berkas.
Identity repository and document auditRepositori identitas dan audit dokumen
Searchable repository indexing uploaded citizen verification credentials cross-referenced with aggregate submission records.Repositori terindeks untuk mencari dokumen identitas warga yang terhubung langsung dengan riwayat pengajuan masing-masing akun.
Executive metrics dashboardDasbor metrik dan ringkasan eksekutif
High-level metrics tracking volume by status, registered citizen demographics, 6-month submission trends, and prioritized pending queues.Ringkasan metrik yang melacak volume per status, demografi warga terdaftar, tren permohonan 6 bulan terakhir, dan antrean prioritas.
Identity Verification & Authentication SecurityVerifikasi Identitas & Keamanan Autentikasi
Because public records requests involve legal standing and sensitive administrative disclosures, accounts require rigorous identity verification before initiating submissions.Karena permohonan data publik menyangkut keabsahan hukum dan dokumen dinas yang sensitif, setiap akun wajib melalui verifikasi identitas ketat sebelum dapat mengajukan permohonan.
Time-sensitive 6-digit OTP deliveryVerifikasi kode OTP 6 digit dengan batas waktu
Account registration dispatches a time-bound verification code with a strict 5-minute time-to-live (TTL). Protected submission routes remain gated until verification is completed.Pendaftaran akun memicu pengiriman kode verifikasi dengan masa aktif 5 menit. Rute pengajuan permohonan tetap terkunci di balik middleware verified hingga kode berhasil divalidasi.
Throttled dispatch protectionProteksi pengiriman ulang dengan pembatasan laju
Code resend requests are governed by rate-limiting middleware capped at 6 attempts per minute to mitigate abuse vectors and spam.Permintaan kirim ulang kode diatur oleh middleware rate-limiting dengan batas maksimal 6 percobaan per menit guna mencegah eksploitasi dan spam.
Localized transactional communicationKomunikasi transaksional terlokalisasi
Customized Indonesian notification templates handling secure token-based password resets, verification challenges, and lifecycle status updates.Template notifikasi email berbahasa Indonesia yang dirancang khusus untuk reset kata sandi berbasis token aman, kode verifikasi, dan pembaruan status berkas.
State-Driven Engineering: Beyond Form CollectionRekayasa Berbasis Status: Melampaui Pengumpulan Formulir
The primary technical challenge of a public information service is not merely collecting form inputs, but providing an auditable, legally defensible chain of custody. Every citizen inquiry must transition to an accountable conclusion, whether through validated document disclosure or an explicit, appealable legal justification. The underlying relational architecture and validation checks were designed around that statutory mandate.Tantangan teknis utama dari layanan informasi publik bukanlah sekadar mengumpulkan data formulir, melainkan memastikan adanya jejak audit yang akuntabel dan berlandaskan hukum. Setiap permohonan warga harus berakhir pada titik pertanggungjawaban yang jelas, baik melalui penerbitan informasi yang tervalidasi maupun alasan penolakan resmi yang dapat diuji melalui keberatan. Arsitektur relasional dan validasi sistem dirancang khusus untuk menegakkan mandat undang-undang tersebut.
Strategic TakeawaysPelajaran Strategis
- Model institutional workflows as clear state machines before designing presentation layers.Petakan alur kerja institusional sebagai alur status yang jelas sebelum merancang lapisan antarmuka.
- Enforce statutory business policies strictly on the backend across both view initialization and transactional submission phases.Tegakkan aturan bisnis secara ketat di backend, baik pada tahap inisialisasi tampilan maupun eksekusi transaksi data.
- In team development, clear domain boundaries and focused pull requests maintain code quality without conflicts across modules.Dalam pengembangan tim, pembagian batasan modul yang jelas dan pull request terarah menjaga kualitas kode tanpa konflik lintas modul.
