Class teachers in primary school observe day-to-day behaviour, effort and classroom
participation, all of which carry educational weight but are much harder to record
systematically than test grades. Talking with a primary-school class teacher who
had for years kept her own spreadsheets, we recognised an opportunity for a simple,
day-to-day digital tool.
This thesis presents the design and development of Zmago, a web application
that makes such record-keeping easier for the teacher and that lets the student
follow their own progress through a gamified interface. The system supports three
roles: an administrator, a teacher and a student. To encourage daily use, the app
also includes a Wordle-style daily five-letter Slovene word puzzle.
The application is built on Next.js and TypeScript. Server data lives in Supabase
on top of a PostgreSQL database with row-level security, so the data of
one school stays separated from that of others. Student authentication uses our
own JSON Web Tokens together with a session fingerprint, and login endpoints are
protected by a rate limiter. Operations over points and reward redemptions are
implemented atomically through PL/pgSQL stored procedures so that concurrent
calls cannot leave the system in an inconsistent state. The interface is bilingual
and installable as a progressive web application.
The result is a working system, deployed in production on Vercel. Throughout
development we paid particular attention to privacy and security, given that the
system processes data about minors.
|