All Case Studies
Education / HRIS2025Fullstack Developer

School HRIS

9-package school HR platform with RBAC

Laravel 12PHPFilament 4Livewire 3MariaDBFilament Shield (RBAC)Maatwebsite ExcelDomPDFchillerlan/php-qrcodeFonnte SMS Gateway

Problem

Islamic boarding schools (pesantren) in Indonesia struggle with:

  • Manual attendance tracking for hundreds of students and staff
  • No system for monitoring Quran memorization progress
  • Fragmented employee data across spreadsheets
  • Performance evaluation done on paper
  • Inventory management for school assets done ad-hoc

Solution

A modular HRIS built with Laravel 12 + Filament 4, organized as 9 independent package groups using nwidart/laravel-modules:

  1. Kepegawaian (Staff Management) — Employee profiles, contracts, history
  2. Presensi (Attendance) — GPS + QR Code scanning for staff and students
  3. Penilaian Kinerja (Performance) — KPI definition, appraisal forms, scoring
  4. Cuti (Leave) — Leave requests, approvals, balance tracking
  5. Akademik (Academic) — Student profiles, class assignments, QR attendance
  6. Al-Quran — Quran reading progress tracker with surah/juz completion
  7. Inventaris (Inventory) — Asset management with loan tracking
  8. Master Data — Reference data shared across all modules
  9. Resign & Pensiun (Resignation & Retirement) — Exit management

Key Tech Decisions

GPS + QR dual attendance

GPS verifies the staff member is physically at school (geofence check), while QR code acts as the “check-in” trigger. This prevents remote check-ins while keeping the UX simple. QR codes are generated per-employee and printed on ID cards.

Quran progress tracking as a domain-specific feature

Built a dedicated quran_progress table tracking per-student, per-surah, per-juz completion status. This is a unique differentiator — no generic HRIS has this. Teachers log progress via Filament forms; dashboards show class-wide statistics.

Module isolation via nwidart/laravel-modules

Each of the 9 package groups is an independent Composer-like module with its own:

  • Migrations
  • Models
  • Filament resources, pages, widgets
  • Service provider
  • Routes

Modules use Laravel’s event system for cross-module communication (e.g., Kepegawaian fires EmployeeHired event → Presensi module auto-creates attendance profile).

Metrics

Metric Value
Module Groups 9 (Kepegawaian, Presensi, Akademik, etc.)
User Roles 3 (Super Admin, PSDM, Kepala Sekolah)
Attendance Methods GPS + QR Code
Export Formats Excel (Maatwebsite) + PDF (DomPDF)