Skip to content
Project Programming

SIMPEG

By Romi Fadli, S.Kom. 10 min read v2 Software Design
On this page
Employees and administrators use the Web App, which talks to the Core API; the Core API uses storage, regions, face and preview services, sends documents to the Aurograf signing platform, sends logs and traces to the log stack, and imports from the old system

SIMPEG adalah sistem informasi kepegawaian Pemerintah Kota Tangerang Selatan: satu sistem untuk record, karier, dan layanan setiap aparatur sipil negara di seluruh perangkat daerah kota. Pegawai menjaga datanya sendiri tetap mutakhir dan mengikuti kenaikan gaji berkala, kenaikan pangkat, dan pensiunnya; admin di setiap perangkat daerah dan kantor kepegawaian kota bekerja tepat pada bagian organisasinya masing-masing; dan setiap aturan yang diterapkan sistem diambil dari peraturan yang menetapkannya. SIMPEG adalah aplikasi internal, dipakai aparatur kota, bukan masyarakat umum.

Saya memimpin pengembangannya sejak 2023, dan generasinya yang sekarang — core Laravel baru dan antarmuka Vue baru — sepenuhnya hasil kerja saya, dari model data sampai layar.

Sekilas

KlienDiskominfo Kota Tangerang Selatan, pengelola aplikasi di lingkup kota; dioperasikan oleh kantor kepegawaian kota, BKPSDM
PeranSolution architect sejak 2023 yang memimpin tim — quality assurance, backend developer, UI developer, DevOps, dan DevSecOps — sekaligus backend developer utama yang menulis sendiri API utamanya
PeriodeSejak 2023
Versi2
StatusDalam pengembangan — aplikasi internal tanpa alamat publik
StackLaravel dan PHP, Vue dan TypeScript, Rust, Python; PostgreSQL, Redis, storage kompatibel S3; OpenTelemetry, Elasticsearch, dan Kibana; Docker
Untuk siapa, apa yang saya kerjakan, dan di mana posisinya sekarang.

Peran saya sebagai solution architect

Di SIMPEG, peran pertama saya adalah solution architect. Domain master untuk kepegawaian adalah badan kepegawaian kota, BKPSDM, jadi dari sanalah pekerjaannya dimulai: saya mempelajari cara administrasi kepegawaian berjalan beserta regulasi di baliknya, mendengarkan kebutuhan badan itu serta keluhan pegawainya hari ini, lalu menerjemahkannya menjadi arsitektur.

  • Memilih teknologi yang menjadi dasar sistem.
  • Merancang arsitektur modular dan memecah fungsinya ke beberapa module terpisah.
  • Merancang cara ia di-deploy dan dioperasikan.
  • Membagi pekerjaan ke tim: quality assurance, backend developer, UI developer, DevOps, dan DevSecOps.
  • Meninjau temuan quality assurance dan DevSecOps, lalu memasukkan perbaikannya ke arsitektur dan ke alur kerja tim.

Selain itu, saya juga bagian dari tim sebagai backend engineer, di module yang paling mahal bila salah: API utama yang menjadi tumpuan seluruh bagian lain sistem.

Tantangannya

Pemerintah kota mempekerjakan ribuan aparatur sipil negara di puluhan perangkat daerah, dan hampir semua hal tentang mereka diatur peraturan: gajinya, kenaikan gaji berkalanya, kenaikan pangkatnya, batas usia pensiunnya, dan susunan perangkat daerah tempat mereka bekerja. Kota ini sudah punya sistem kepegawaian buatan tim lain, tetapi datanya tak pernah dijaga dengan standar, dan banyak aturannya ditulis ke kode bertahun-tahun lalu lalu diam-diam menjadi usang.

Sistem baru harus membawa data itu tanpa kehilangan apa pun, menerapkan aturan sebagaimana berlaku pada tanggal mana pun dan bukan sebagaimana terakhir kali seseorang menyunting kode, dan melayani tiga kelompok yang sangat berbeda sekaligus — pegawai yang mengurus record-nya sendiri, admin di setiap perangkat daerah, dan kantor kepegawaian yang mengawasi semuanya — masing-masing hanya melihat bagian organisasinya sendiri.

Yang dikerjakannya

A. Pegawai mengurus record-nya sendiri

Setiap pegawai punya portal di ponsel dan desktop: profil, keluarga, riwayat karier dan kompetensi, serta pengingat yang perlu diperhatikannya. Ia mengubah datanya dengan mengusulkan perubahan beserta dokumen pendukungnya, mengikuti setiap usulan sampai disetujui atau dikembalikan, dan membuka layanan kenaikan gaji berkala, kenaikan pangkat, dan pensiun dengan dokumen yang diwajibkan masing-masing.

B. Admin memegang record yang lengkap

Admin mengelola data personal, penempatan, keluarga, dan lebih dari dua puluh jenis riwayat karier, memeriksa usulan pegawai, membawa kasus kenaikan gaji berkala, kenaikan pangkat, dan pensiun sampai keputusannya, dan menerima draf SK yang setiap angkanya berasal dari record.

C. Organisasi tersimpan sebagaimana adanya pada tanggal mana pun

Susunan dan peta jabatan setiap perangkat daerah milik peraturan yang menetapkannya dan berlaku pada tanggalnya sendiri. Seluruh pemerintah bisa digambar sebagaimana adanya pada hari apa pun, dan jumlah orang di setiap jabatan dihitung dari data pengangkatannya.

D. Aturan diambil dari peraturan

Tabel gaji disimpan per peraturan beserta tanggal berlakunya, batas usia pensiun diambil dari jabatan yang dipegang, dan kedudukan hukum seseorang berubah otomatis saat peristiwa yang ditetapkan peraturan dimulai dan berakhir.

E. Setiap akses punya lingkup

Akses diberikan sebagai peran pada satu lingkup — seluruh kota, satu perangkat daerah, atau satu unit seperti sekolah — diajukan dan disetujui orang yang berbeda, dibatasi waktunya, dan mengikuti surat edaran badan kepegawaian nasional tentang pengelolaan akses ke sistem kepegawaian.

F. Melapor, mengingatkan, dan mengundang

Laporan mencakup daftar pegawai, daftar urut kepangkatan, rekapitulasi, bezetting, dan lainnya, masing-masing disaring menurut lingkup pembacanya. Pengingat jatuh tempo dikirim lewat email, dan undangan untuk membuat akun dikirim dalam gelombang harian.

G. Memverifikasi identitas dan menandatangani dokumen

Identitas pemilik akun diverifikasi dengan KTP dan tantangan wajah langsung. Dokumen yang perlu ditandatangani diproses di Aurograf, platform tanda tangan digital kota, dengan SIMPEG sebagai salah satu client eksternalnya.

H. Membawa data lama

Record dari sistem sebelumnya diimpor tahap demi tahap dari salinan yang hanya dibaca, bisa diulang, dengan laporan setiap masalah yang ditemukan dan tanpa data pribadi di laporan itu.

Standar yang dipatuhi

StandarYang dijaminnya di siniTempatnya
OAuth 2.0 dan OpenID Connect, dengan PKCElogin lewat single sign-on eksternal tanpa client secret di browserCore API, Web App
JSON Web Tokensatu format token yang bisa diverifikasi setiap service sendiriCore API
TOTP (RFC 6238)autentikasi dua faktor dengan aplikasi authenticator apa punCore API, Web App
Presigned URL, AWS Signature Version 4file berpindah antara browser dan storage tanpa melewati intiOSW
W3C Trace Context dan OpenTelemetrysatu jejak dari request user melewati setiap servicesetiap module
ISO 8583 dan ISO 4217setiap nominal adalah integer dalam satuan terkecil mata uangnyaCore API, Web App
Surat edaran nasional tentang pengelolaan akses kepegawaianakses diajukan dan disetujui, verifikator bukan penyetuju, pemberian akses paling lama dua tahunCore API
Peraturan kepegawaian tentang gaji, pangkat, pensiun, dan tunjangansetiap aturan yang diterapkan adalah yang berlaku pada tanggal yang dimaksudCore API
WAI-ARIAnavigasi yang mengumumkan halaman aktif dan target sentuh yang cukup besar untuk ponselWeb App
Standar yang dipatuhi SIMPEG, apa yang dijamin masing-masing, dan module yang membawanya.

Bagaimana ia dibangun

SIMPEG adalah satu core API dan satu aplikasi web yang dikelilingi service khusus, masing-masing dengan versi dan siklus rilisnya sendiri. Inti memegang aturan dan data kepegawaian; storage, data wilayah, tantangan wajah, dan pratinjau dokumen adalah module yang bisa dipakai ulang dan juga saya pakai di project lain; dan tanda tangan diserahkan ke platform tanda tangan kota.

Pegawai dan admin memakai Web App yang berbicara dengan Core API; Core API memakai service storage, wilayah, wajah, dan pratinjau, mengirim dokumen ke platform tanda tangan Aurograf, mengirim log dan jejak ke log stack, dan mengimpor dari sistem lama
Satu inti dan satu antarmuka, empat service yang dipakai ulang, platform tanda tangan eksternal, dan sistem lama sebagai sumber yang hanya dibaca.

Core API: record dan riwayat pegawai, usulan, layanan dan keputusan, aturan dari peraturan, bagan organisasi, dan akses berlingkup.

Aplikasi web tempat pegawai dan admin bekerja.

Service storage yang dilewati setiap dokumen dan lampiran.

Service data wilayah di balik setiap alamat.

Tantangan wajah langsung yang dipakai saat verifikasi identitas.

Renderer yang memberi setiap dokumen unggahan pratinjaunya.

Platform tanda tangan kota, tempat dokumen SIMPEG ditandatangani.

Bagaimana ia dirilis dan dioperasikan

Setiap module berjalan sebagai stack container tersendiri dengan image ber-versi, sehingga inti, antarmuka, dan setiap service bisa dirilis menurut jadwalnya sendiri. Jejak setiap request dikumpulkan di satu tempat bersama log-nya, sehingga pertanyaan tentang record mana pun atau layar yang lambat bisa dijawab dari bukti. Perpindahan dari sistem lama pun bagian dari operasi: impor berjalan bertahap dan aman diulang selama sistem lama masih terus berubah sampai saat peralihan.

Tempat setiap jejak dan log platform ini berakhir.

Keputusan kunci

Pakai ulang yang sudah ada. Storage, data wilayah, tantangan wajah, dan pratinjau dokumen adalah module yang saya bangun untuk dipakai bersama lintas project, jadi SIMPEG memakainya apa adanya dan tidak menumbuhkan salinannya sendiri. Sistem kepegawaian hanya berisi apa yang memang tentang kepegawaian.

Tanda tangan milik platform tanda tangan. Kota sudah menjalankan platform tanda tangan digital dengan rantai kepercayaannya sendiri. SIMPEG tidak memegang sertifikat atau menandatangani apa pun sendiri: ia mendaftarkan setiap tahap penandatangan ke platform itu sebagai client eksternal, lalu menerima kembali dokumen yang sudah ditandatangani.

Data lama dipindah bertahap. Database sistem sebelumnya dibaca tanpa pernah ditulisi, setiap tahap aman dijalankan ulang, dan setiap masalah dilaporkan, tidak diam-diam diperbaiki dan tidak dibiarkan menghentikan impor.

Aturan berasal dari peraturannya sendiri. Saya membaca peraturannya, tidak meniru perilaku sistem lama; yang diubah peraturan disimpan sebagai data beserta tanggal berlakunya, dan kode yang menerapkannya menyebut peraturan yang diimplementasikannya.

Uang punya satu konvensi. Setiap nominal, dari tabel gaji sampai SK, adalah integer dalam seperseratus rupiah, konvensi yang sama dengan yang saya pakai di setiap sistem yang saya bangun.

Bagan organisasi tetap relasional dan berversi. Bagan adalah data master bagi pegawai, jabatan, dan akses, jadi ia tinggal di database relasional yang sama, dalam versi-versi yang diadopsi setiap perangkat daerah pada tanggalnya sendiri.

Akses mengikuti organisasi dan pedoman nasional. Setiap pemberian akses menyebut lingkupnya, diajukan dan disetujui orang yang berbeda, dan berakhir dengan sendirinya.

Pegawai mengubah datanya sendiri, dan pemeriksa yang menyetujui. Admin tidak mengetik setiap perubahan; pegawai mengusulkan koreksi beserta dokumennya, lewat validasi yang sama dengan suntingan admin, dan pemeriksa yang memutuskan. Orang yang paling tahu faktanya yang memasukkannya, dan tak ada yang masuk ke record tanpa diperiksa.

Riwayat

SIMPEG menggantikan sistem kepegawaian lama buatan tim lain, yang kini hanya berperan sebagai sumber data yang sedang dipindahkan. Pekerjaan saya pada sistem baru dimulai 2023, dan generasinya yang sekarang — core Laravel baru dan antarmuka Vue baru — dibangun ulang oleh tim berdasarkan rancangan saya, dengan API intinya saya tulis sendiri.

Status

SIMPEG sedang dalam pengembangan dan pekerjaannya terus berlangsung. Halaman ini akan bertumbuh bersamanya seiring bagian-bagian baru sistem dirilis.

Istilah

Perangkat daerah
Dinas atau badan pemerintah kota, seperti dinas pendidikan atau kesehatan, dengan susunan dan pegawainya sendiri.
Kantor kepegawaian
Kantor kota yang mengawasi aparatur sipil negara di seluruh perangkat daerah dan mengoperasikan sistem ini sehari-hari.
Kenaikan gaji berkala
Kenaikan gaji pokok aparatur sipil negara secara berkala yang mengikuti masa kerjanya dalam satu golongan.
SK
Surat keputusan, dokumen resmi yang mencatat keputusan tentang seorang pegawai, misalnya kenaikan gaji berkala.
Single sign-on
Satu akun yang membuat seseorang bisa login ke banyak aplikasi tanpa password terpisah untuk masing-masing.

Technologies covered

  • PHP
  • Python
  • Rust
  • TypeScript
  • Laravel
  • Vue
  • Elasticsearch
  • PostgreSQL
  • Redis
  • Docker
  • Kibana
  • OpenTelemetry
  • ISO 8583

About the author

Photo of Romi Fadli

Romi Fadli, S.Kom.

Solution Architect · Backend Engineer · Embedded Systems

In my day job I work as a solution architect. I design the system, lead the team that builds it — quality assurance, backend developers, a UI developer, DevOps and DevSecOps — and write the most critical modules myself, such as a certificate authority, a long-term PDF signer, and the core API of a personnel system.

I work across the whole stack that a running system actually needs. On the hardware side that means PCB design, microcontrollers, and embedded firmware — including RISC-V boards running FreeRTOS and Embassy, speaking MQTT over mutually authenticated TLS on a microcontroller with 64 KB of SRAM.

Most of my day-to-day work is software: Rust backends and API modules built on Clean Architecture, an OAuth2/OpenID Connect authorization server written from scratch, PAdES document signing, and certificate authorities — root CAs, timestamping authorities, and OCSP responders. I also build the frontends that sit on top of them.

Running all of that means infrastructure: Docker Compose stacks, networking, Mikrotik and RADIUS, observability with OpenTelemetry, and a steady habit of writing command-line tools and utilities for Linux when the existing ones do not fit.

Share

Enjoyed this?

Get an email when a new article is published.

Related Articles

One definition in the middle feeds both a phone layout with stacked cards and a bottom bar, and a desktop layout with a top menu and a table

Aplikasi browser Vue dari sistem kepegawaian aparatur sipil negara: portal swalayan tempat pegawai mengurus record dan mengusulkan perubahan, serta administrasi bagan organisasi berversi, data referensi, dan akun — dibangun dari beberapa definisi bersama, bukan satu halaman per record.

9 min read Read more →
The core API at the centre, fed by storage, address, face and preview services, with documents sent across a boundary to an external signing platform

Inti Laravel sistem kepegawaian aparatur sipil negara: record pegawai dan riwayat karier, usulan swalayan yang diperiksa, keputusan kenaikan gaji berkala, kenaikan pangkat, dan pensiun, aturan dari peraturan, bagan organisasi berversi, dan akses berlingkup sampai satu unit.

11 min read Read more →