Back to Portfolio
Full-Stack Web Developer

Sistem Absensi Karyawan Berbasis Geotagging

Proyek Tugas Akhir yang lahir dari pengalaman magang sebagai Software Engineer di PT Surya Agrolika Reksa (Adimulia Group). Sistem absensi berbasis web dengan fitur geotagging, dibangun menggunakan Laravel (PHP), dirancang untuk memusatkan data absensi dan memverifikasi lokasi karyawan saat check-in, pendekatan yang lebih sesuai untuk kondisi lapangan dibanding sistem berbasis mobile.

LaravelPHPMySQLTailwind CSSAlpine.jsDomPDF
Sistem Absensi Karyawan Berbasis Geotagging

Objective

Proyek ini lahir dari hasil interview dengan bagian administrasi perusahaan yang mengungkap tantangan nyata dalam pencatatan absensi karyawan di lingkungan kerja lapangan, termasuk koneksi internet yang tidak stabil dan karyawan yang tersebar di berbagai lokasi. Solusi: memusatkan data absensi dan memverifikasi lokasi karyawan saat check-in menggunakan sistem web dengan geotagging.

Key Features

  • Geotagging-Based Attendance: Clock-In dan Clock-Out tervalidasi dengan batas radius GPS dari titik kantor
  • Role-Based Access Control (RBAC): Pemisahan hak akses antara Admin (manajemen divisi/area) dan Karyawan (absensi/cuti)
  • Automated Time Tracking: Deteksi anomali keterlambatan dan kepulangan awal secara otomatis berdasarkan jadwal
  • Leave Management System: Modul pengajuan cuti digital dengan approval langsung oleh admin
  • Comprehensive Reporting: Export laporan kehadiran bulanan dan harian ke format PDF secara dinamis

Challenges

  • Memastikan akurasi lokasi agar tidak dapat dimanipulasi (Fake GPS) dan sistem bisa mengkalkulasi jarak lokasi secara presisi.
  • Mengelola kalkulasi waktu absensi untuk mendeteksi keterlambatan secara dinamis antara server dan waktu lokal.
  • Merancang antarmuka absensi yang harus sangat intuitif, cepat, dan responsif (Mobile-First) bagi pengguna smartphone.

Solutions

  • Mengimplementasikan algoritma Haversine di sisi backend untuk mengkalkulasi jarak koordinat GPS secara matematis terhadap radius absensi.
  • Menggunakan library Carbon bawaan Laravel untuk menangani dan menstandarisasi perhitungan waktu absensi.
  • Mengombinasikan Tailwind CSS dan Alpine.js untuk interaksi UI sisi klien tanpa full-page reload, memberikan pengalaman layaknya native-app.
Loading gallery...