All writing
2 min read

GPS + QR attendance: dua mekanisme yang saling menambal, bukan over-engineering

GPS saja bisa di-spoof. QR saja bisa difoto dan dishare. Digabung, keduanya menutup celah masing-masing. Ini alasan desainnya di School HRIS.

TL;DR

Satu mekanisme absensi tidak pernah cukup. GPS membuktikan kamu di lokasi, QR membuktikan kamu melakukan check-in. Gabungan keduanya menutup celah yang tidak bisa ditutup masing-masing.

Setup

Di School HRIS, staf sekolah absen pakai GPS + QR code. Reaksi pertama yang sering muncul: “kenapa dua-duanya? ribet.”

Jawabannya: karena masing-masing punya failure mode yang berbeda, dan failure mode-nya saling menutupi.

Failure mode GPS saja

  • Mock location. Di Android, fake GPS itu tinggal install app. Titik lokasi bisa diatur dari rumah sambil tiduran.
  • Akurasi indoor. GPS di dalam gedung bisa meleset puluhan meter. Geofence terlalu ketat = guru yang benar-benar di sekolah ditolak absen.
  • Fire-and-forget. Kalau check-in otomatis saat masuk radius, sistem tidak bisa bedakan “hadir kerja” dan “lewat depan sekolah”.

Failure mode QR saja

  • QR bisa difoto. Kode yang sama bisa dishare via chat. Satu orang di sekolah bisa absenkan lima temannya yang masih di rumah.
  • Tidak ada bukti lokasi. QR statis tidak tahu di mana ia di-scan.

Kenapa digabung bekerja

Flow-nya: scan QR → sistem verifikasi GPS dalam geofence sekolah → absen tercatat.

flowchart TD
    A[Staf scan QR] --> B{GPS dalam geofence?}
    B -->|Ya| C[Absen tercatat]
    B -->|Tidak| D[Ditolak: di luar area sekolah]
  • GPS menutup celah QR: QR yang difoto dan dishare percuma kalau yang scan tidak di sekolah.
  • QR menutup celah GPS: check-in jadi aksi eksplisit yang dilakukan staf, bukan deteksi pasif yang bisa dipicu mock location.

QR code di-generate per employee dan dicetak di ID card. Jadi “bawa ID card” adalah kebiasaan yang sudah ada — tidak ada behavior baru yang dipaksakan.

Trade-off yang aku akui

  • UX dua langkah. Lebih lambat dari sekadar buka app. Aku terima: absensi adalah aksi sekali-dua kali sehari, friksi 10 detik masih masuk akal.
  • Device tanpa GPS bagus tetap bermasalah. Akurasi GPS device murah bisa belasan meter. Solusinya: radius geofence tidak dibuat terlalu ketat — cukup untuk membedakan “di sekolah” vs “di rumah”, bukan “di gedung A” vs “di gedung B”.
  • Masih bukan anti-fraud sempurna. Orang yang benar-benar niat bisa spoof GPS + bawa QR sendiri. Tapi bar-nya sudah jauh lebih tinggi dari satu mekanisme. Sistem absensi bukan sistem perbankan — cost of fraud rendah, jadi defense-in-depth secukupnya.

Edge cases — kapan desain ini tidak cocok

  • Tim remote / lapangan: geofence tidak relevan. Perlu mekanisme lain (foto selfie, rotasi QR dinamis per hari).
  • Lokasi dengan sinyal GPS sangat buruk: perlu fallback, misal approval manual oleh atasan dengan catatan.

Kesimpulan

Jangan pilih satu mekanisme absensi berdasarkan mana yang paling simpel. Petakan dulu failure mode masing-masing, lalu gabungkan yang saling menutupi.

References