AppVion Studio logo AppVion Studio Case study

Institutional attendance platform

Attendance Management: institutional attendance without a biometric machine.

Attendance is marked on the phone already in the room, works with no signal, syncs when the network returns, and leaves an audit trail nobody can quietly edit. Four roles — teacher, head of department, administrator, and student — each with a purpose-built view of the same records.

Jetpack Compose Firebase WorkManager Offline-first Analytics
4 user roles Works offline Append-only audit log
Capture flow Mark now, sync later
01
Marked in class Section roster loaded and stored locally
02
Queued offline No signal required to finish the register
03
Synced & logged Background worker writes and audits the change

The problem

Attendance hardware fails in exactly the places attendance matters.

Context

Biometric attendance machines are expensive per room, queue students at the door, and stop working entirely when the power or the network does. Paper registers avoid all of that and create a different problem: nothing is aggregated and nothing is verifiable.

What kept breaking

Registers were transcribed into spreadsheets weeks later, so shortfalls surfaced long after anything could be done. Corrections were made in place with no record of who changed what. And a lecture hall with poor connectivity meant any online-only system simply could not be used.

The real requirement

Capture that never depends on the network, aggregation that is immediate once synced, and a change history that makes a disputed attendance record answerable.

The approach

Four roles, one record, offline by default.

01

Teacher

Open the section, mark the register, done. The screen is designed for speed in front of a room, and it does not care whether there is signal.

02

Head of department

Analytics across sections and cohorts, so a developing attendance problem is visible while the term is still running.

03

Administrator

Master student records, section setup, user management, CSV export, and the audit log covering every change made in the system.

04

Student

Claim a student identity once, then see an honest personal attendance record rather than finding out at the end of term.

Engineering highlights

The parts that were harder than they look.

Offline capture with background sync

Marking is written locally and drained by a WorkManager job when connectivity returns. The teacher never waits on a spinner and never loses a register because a lecture hall has thick walls.

Large-list performance

Institutional rosters are long. Records are paged rather than loaded wholesale, so scrolling a large cohort stays smooth on the mid-range devices staff actually carry.

Append-only audit log

Corrections are legitimate and expected; silent corrections are not. Every administrative change is appended to a log rather than overwriting history, which is what makes a contested record settleable.

Identity claiming

Students authenticate themselves and then claim their institutional student ID, so the roster imported by an administrator and the person holding the phone are linked without an administrator handing out credentials.

Technology

The stack behind Attendance Management.

Kotlin Jetpack Compose Material 3 Coroutines & Flow Firebase Auth Cloud Firestore WorkManager DataStore Navigation Compose Paging CSV Export

More case studies

Other systems we have built.

University product

WUM Connect

Role-based campus communication with real-time announcements, faculty and student management, and push notifications.

Read the Case Study
Events platform

Sports Society Events

Event coordination with registrations, per-event chat, leaderboards, and coach performance tracking.

Read the Case Study
All work

Full portfolio

Every case study and product demo in one place, across logistics, field service, education, events, and SaaS.

Browse all case studies

Start the conversation

Tracking something that has to work without a network?

Attendance, inspections, stock counts, field surveys — anything captured away from a desk needs offline-first design from the start, not bolted on later.

WhatsApp Start Project