Oksa Satya.
Deep dive · HRIS

Dexova HRIS — Payroll & Absensi

Payroll sadar regulasi dan absensi geofence — mesin HR Dexova dari dekat.

Role
Architect & Full-Stack Developer
Periode
2025 – sekarang
Kategori
Deep dive · HRIS
Kode
Repo privat
Stack
GoPostgreSQL + sqlcRedis (job queue)Next.js (dex-fe)PWA (dex-attendance)

Context

HRIS adalah modul terbesar Dexova — dan alasan banyak bisnis melirik ERP. Modul ini melayani dua persona lewat dua aplikasi berbeda: admin HR bekerja di dashboard (dex-fe), karyawan memakai PWA absensi (dex-attendance).

Halaman ini membedah tiga bagian yang paling berat secara engineering: payroll engine, absensi geofence, dan mesin approval.

Payroll engine

Aturan penggajian Indonesia diimplementasikan sebagai business rules yang bisa dikonfigurasi — bukan angka hardcode:

  • Lembur bertingkat mengikuti PP 35/2021 — tarif berbeda per jam ke-1, jam berikutnya, dan hari libur; lembur tercipta otomatis saat jadwal terlampaui, lalu melewati approval.
  • Komponen gaji fleksibel per perusahaan + tarif per karyawan (pro-rata untuk karyawan baru, komponen yang ditanggung perusahaan).
  • Cutoff vs payday dikonfigurasi terpisah; payday bergeser otomatis ketika jatuh di hari libur bank.
  • Periode payroll dikunci sebelum run — run digenerate dari data absensi yang sudah final, dengan progress monitoring.
  • Penyesuaian satu kali: bonus, THR, severance — masuk run tanpa mengubah komponen permanen.
  • Pinjaman karyawan dengan pemotongan gaji otomatis per periode.
  • Aturan pembagi tarif harian, strategi pembulatan, tipe minggu kerja (termasuk Sabtu setengah hari) — semua konfigurasi, bukan cabang if di kode.
  • Periode payroll yang lupa dikunci? Ada scheduler auto-lock — periode menutup dirinya sendiri sesuai konfigurasi.
Halaman Run Payroll di dashboard Dexova: run digenerate dari periode yang terkunci
dex-fe — Run Payroll: digenerate hanya dari periode terkunci (data demo)
Slip gaji digital karyawan di PWA dex-attendance
dex-attendance — slip gaji digital karyawan (data demo)

Absensi geofence

Absensi adalah data mentah payroll — kalau absensinya salah, gajinya salah. Desainnya berfokus pada validitas data di sumbernya:

  • Check-in/out dari PWA dengan geofence (Geolocation API + retry/backoff): aplikasi mendeteksi kantor terdekat dan menolak absen di luar radius.
  • Selfie wajib saat check-in — kamera via getUserMedia dengan overlay nama + timestamp, mencegah titip absen.
  • Model dua alamat untuk WFH — karyawan bisa mengajukan lokasi rumah sebagai geofence kedua, lewat approval.
  • Koreksi kehadiran ber-approval (bukan edit bebas), plus manajemen pulang-lebih-awal.
  • Aturan pelanggaran + ambang keterlambatan per lokasi/departemen; analytics kehadiran dan laporan kepatuhan untuk HR.
  • Rekap bulanan mengunci data kehadiran sebagai input payroll — satu sumber kebenaran.
PWA absensi Dexova: halaman check-in dengan deteksi jarak ke kantor
dex-attendance — geofence check-in dengan selfie wajib (data demo)
Halaman Attendance di dashboard admin Dexova dengan ringkasan hadir, absen, terlambat, dan cuti
dex-fe — pemantauan kehadiran sisi admin (data demo)

Mesin approval

  • Aturan approval multi-level dengan final approval wajib di HR — konsisten untuk cuti, koreksi absen, lembur, dan shift swap.
  • Delegasi approval saat approver cuti/berhalangan.
  • Eskalasi otomatis berbasis SLA (scheduler in-process): pengajuan yang tidak direspons naik ke approver berikutnya — pengajuan tidak pernah menggantung.

Shift & penjadwalan

  • Grid shift bulanan dengan generator rotasi otomatis.
  • Shift swap antar-karyawan dengan approval.
  • Toleransi keterlambatan per jadwal kerja.

Data operations

Onboarding perusahaan berarti ratusan karyawan masuk sekaligus — jalur datanya harus kuat:

  • Bulk import Excel (Combined Bulk Import) sebagai job async: progress tracking, mode commit, strategi duplikat, dan auto-provisioning akun.
  • Export CSV/Excel dengan mode sync untuk data kecil dan async untuk dataset besar.
  • Reset password self-service dengan OTP email, masa berlaku, lockout 5 percobaan, dan eskalasi admin.
Manajemen karyawan di dashboard Dexova: daftar karyawan dengan departemen dan jabatan
dex-fe — manajemen karyawan, target bulk import (data demo)

Outcome

  • Payroll berjalan dari data absensi yang terkunci — bukan spreadsheet yang diedit di menit terakhir.
  • Aturan regulasi (lembur bertingkat, payday shift) hidup sebagai konfigurasi teruji, siap mengikuti perubahan kebijakan.
  • HR berhenti menjadi operator data manual: approval, koreksi, dan rekap berjalan lewat alur yang bisa diaudit.

Lessons learned

  1. 01

    Aturan ketenagakerjaan berubah — payroll engine yang memisahkan aturan dari kode adalah investasi, bukan over-engineering.

  2. 02

    Validitas data absensi harus dijaga di sumbernya (geofence, approval koreksi); membersihkannya belakangan jauh lebih mahal.

  3. 03

    SLA + eskalasi otomatis mengubah approval dari bottleneck organisasi menjadi proses yang selesai sendiri.

Butuh sistem seperti ini?

Saya menerima proyek pembangunan sistem bisnis — dari perencanaan arsitektur sampai aplikasi berjalan di production.