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.

  • The roll for a class of ten students, each row carrying a present, an absent and a homework button, with a week selector above and Save draft and Submit buttons below.
  • An administrator's view of one Sunday, listing four classes with their teacher, their present and absent counts, and whether the roll is still a draft or already submitted.
  • The whole school roll of students in one alphabetical list, each showing the class they are in and their student number.
  • A single student record showing two guardians, each with a phone number and an email address, marked as mother and father with one set as the primary contact.
  • The import and export screen, with a class filter and buttons to export students, archived students or attendance as CSV, and to choose a file to import.

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.