Face-Recognition Attendance System

October 1, 2024 · 3 min read · Shipped

#Laravel#Filament#MySQL#Cloudinary

Presience landing page

The Problem

Manual student attendance tracking is slow, error prone, and easy to game. Attendance sheets get lost, permit letters pile up on desks, and nobody can verify after the fact who was actually in the room. The goal was to automate check-ins with face recognition while keeping scheduling, attendance records, and permits manageable through one system.

My Role

As System Analyst and Back End Developer, I analyzed user requirements, designed the system workflows, flowcharts, and ERD, then built the backend that powers both the admin dashboard and the mobile client.

Analysis and System Design

I started by mapping how attendance and permits actually work on campus, then turned that into design artifacts the whole team could build from:

  • Flowcharts for the permit approval flows, covering permits filed before, during, and after class, each with a face verification step
  • Class diagram modeling students (including face embeddings for recognition), admins, lecturers, groups, schedules, rooms, courses, attendance records, and permits
  • Database design sketching every table, from photos and face data to schedules, attendance states (sakit, izin, alpha), and permit details

Flowcharts I drew for the permit approval flows, each with face verification

Class diagram I designed for the attendance system

Database design sketch for the attendance system

What I Built

Using Laravel, MySQL, Cloudinary, and Filament, I built the system that automates student attendance tracking:

Face-Recognition Attendance

  • Automated check-ins matched against registered face embeddings, with re-registration support when a student’s appearance data needs updating
  • Face image storage and handling through Cloudinary
  • Lecturer verification flag on attendance records so a check-in can require human confirmation
  • Filament admin dashboard for monitoring attendance records, schedules, and permits

RESTful APIs

I designed and implemented the API surface the mobile app consumes:

  • Authentication and token management (login, password changes, password recovery)
  • Scheduling endpoints for classes, weeks, rooms, and courses
  • Attendance tracking endpoints, including history per student
  • Permit management endpoints for filing permits with evidence and tracking approval status
  • A location-aware endpoint tying attendance to the classroom coordinates stored per room

Permit Workflows

Students can file permits with supporting evidence before, during, or after class. Each flow verifies the student’s face, then routes the permit for approval, with full history visible to both students and admins.

Technical Stack

  • Backend: Laravel serving RESTful APIs
  • Database: MySQL, designed from my own ERD
  • Media: Cloudinary for face image storage
  • Admin: Filament dashboard

What I Learned

Designing the API surface first, covering auth, tokens, schedules, attendance, and permits, kept the mobile integration smooth, and the ERD work up front saved several refactors later. This project also taught me to design for distrust: every attendance claim in the system is backed by either a face match, a lecturer check, or a paper trail.