markAtt
Attendance and homework tracking for community schools that meet once a week. Built for volunteer teachers marking a roll on their phone on a Sunday morning.
What it does
For teachers
Open the app, see your class, mark each student present or absent with one tap. Homework is recorded the same way. The roll takes about a minute, then it is submitted and locked so nothing changes by accident.
For administrators
See which classes have marked their roll each week. Add and edit students with guardian contacts, move a student between classes on a chosen date, import and export the student list, and export attendance for the term. Set up terms and roll them over into the next one.
How it is built
React Native and Expo on the front, Supabase on the back — Postgres, Auth, row-level security, Edge Functions and scheduled jobs.
Row-level security is the only security boundary. A teacher can read and write the roll for their own class and nothing else, enforced in the database rather than in the app, so a stale screen or a modified client cannot get around it. That was tested the way I would test a client's system: stale sessions, cross-teacher access attempts, and offline edits that had to revert cleanly when the server rejected them.
Attendance uses NULL for "not marked yet" rather than defaulting to absent, because a teacher who has not opened the roll is not the same as a student who did not show up. Student records are deleted automatically two years after a student leaves.
Privacy and access
markAtt holds student records for a school and nothing else. No advertising, no analytics, no tracking. Data is stored in Australia.
Accounts are created by the school administrator. There is no public sign-up.




