Mobile applications

Project_24

Face-verified, geofenced lecture attendance that makes proxy attendance nearly impossible

Abstract

Manual registers and RFID cards make it trivial for a student to check in for an absent friend. This project replaces both with a two-phase verification flow: a geofenced location tick at the start of class, followed by a live face-verification check at an unpredictable point mid-lecture, so one sign-in can no longer cover a whole absence. Built as three FastAPI microservices (scheduling, attendance, and AI vision) backed by Supabase Postgres with pgvector for face-embedding similarity search, a Next.js dashboard for lecturers and admins, and a React Native mobile app for students. Designed and built by a three-person team in one academic semester, with deliberate architectural restraint services are only split where the boundary is real (different write patterns, different compute profiles) rather than defaulting to microservices everywhere.

The problem

This started as a university software engineering project (CS3203) with a fairly open brief, fix university attendance tracking. The first instinct, like a lot of student projects was to reach for a maximal microservices architecture, five-plus services, a message queue, an API gateway, a full observability stack. Working through it, that got trimmed down to three services, each justified by a real technical boundary rather than by looking impressive: scheduling-service and attendance-service split because they have genuinely different write patterns (low-volume reference data vs. high-volume transactional check-ins), and ai-vision-service split out because it has a different dependency footprint and compute profile entirely. The core design problem was the attendance flow itself: a single check-in, however verified, doesn't prove someone stayed. The solution, a second, randomly-timed verification window mid-lecture that the student's app never sees coming until it opens, closes that gap without needing dedicated hardware.

The solution

A mobile app where students check in with a location only tap at the start of a lecture, then must pass a combined face-and-location verification during a short, randomly-timed window later in the same lecture — so leaving early means failing a check that hasn't happened yet, not just skipping a check that already passed. Lecturers get a live dashboard view of who's completed each step in real time, plus attendance analytics and manual override with a required reason. Face images are converted to embeddings via DeepFace and compared with cosine similarity, location is verified against each venue's stored geofence using a Haversine distance calculation.

In detail

System consists of *A Next.js web dashboard for lecturers and administrators *A React Native (Expo) mobile app for students *A backend repo containing three FastAPI microservices scheduling-service (courses, offerings, venues, timetables, enrollments) attendance-service (lecture sessions, the two-phase check-in flow, attendance records, reporting, notifications) ai-vision-service (face embedding extraction and matching, reachable only internally).

All three of backend microservices share a common shared-core Python package for JWT verification, role-based access control, and cross-service schemas. Data lives in a single Supabase-managed Postgres database using the pgvector extension for face-embedding similarity search, with Supabase Auth as the identity provider — the backend verifies Supabase-issued JWTs rather than handling authentication itself. RabbitMQ handles asynchronous event messaging between services.

The database schema spans 23 tables covering identity, academic structure, venues and sessions, attendance and verification, and lightweight LMS-style content (materials and notices).

Currently the backend is implemented across all three services with SQLAlchemy models, Alembic migrations, and full RBAC-guarded endpoints; testing and the two client apps are the next phase of work.

Related projects

Mobile applications

EcoTrack

Scalable Multi-Tenant SaaS Platform for Community-Driven Environmental Monitoring and Cleanup Coordination

116 2023