Classroom managementprototype

3apples

A parent email that reads 'spoken warning, then two more warnings' is a different conversation than one that just says the count — so the tool records why, not just how many.

The classroom problem

Behaviour-tracking tools skew elementary and cloud-hosted. Neither fits a secondary CS classroom sitting behind a school firewall that blocks third-party connectors — the original version of this tool ran in exactly that room, on a machine with every API endpoint locked down and no server available at all. And separately from the hosting problem, tally-only systems produce records that don’t survive a parent challenging them: a running count by itself can’t distinguish a student who had one bad moment from one who was warned three times and ignored it.

The design decision

The tool records why, not just how many. Every apple lost or gained requires a stated reason before it commits — nothing changes on the board until the teacher names a cause. Warnings cost nothing but are still logged, because the difference between a fair email home and an ambush is whether the warning is on the record. Undo appends a reversing entry rather than deleting anything, so the log is never silently rewritten. And escalation emails are composed, never sent automatically — a human reads every message that’s about to reach a parent before it goes anywhere.

The scale itself changed from the classroom version: it started at five apples with one escalation tier, and the room made it three apples with two tiers, because a homeroom notice between the first warning and the parent email is where most situations actually resolve. That’s also where the name comes from.

How it works

Students see a nickname and a row of apples on a projected board — nothing else. A costs an apple, a + adds one, and ! logs a spoken warning that costs nothing; all three require picking a reason before anything is recorded. Losing a second apple in a day raises a homeroom notice; losing a third raises a parent email — both sit in a collapsed, teacher-only panel that never appears on the projected board, so a discipline tool doesn’t double as a public shaming device.

What I’d do next

This is a complete build specification, not a built application — the original 3apples ran live in a Grade 10 CS classroom as a static page generated by a Python script, but this rewrite (React, TypeScript, Vite, static Cloudflare Pages hosting) exists as a spec, not yet as code. Worth saying outright rather than implying a working rebuild exists.

Once built: real contact fields replacing a placeholder address generator, multi-class support in the interface (the data model already supports it), a per-student trend view for parent-teacher conferences, and export to whatever gradebook format the school already uses.