LearnR
Maths practice that leans into what a child finds hard
Overview
A maths practice app for children, built for a standard iPad. A parent creates each child's profile and sets the school year they practise at; the child picks a subject from that year and answers questions until they decide to stop. Nothing on the question screen counts anything - no running score, no clock, no timer to beat - and a wrong answer shows the right one and moves on. Stars, a run of days and an optional daily goal are kept, but they arrive between questions and nothing about what to ask next reads them.
Questions are generated rather than stored. Each one comes from a template that declares its variables and an expression for its answer, so a single template is an endless supply of questions at the same difficulty. Three hundred and fifty of them ship, covering Kindergarten to Year 6, and some are a picture rather than a sentence - a spinner, a clock face, a bar graph - drawn fresh each time so no one drawing can become the thing a child recognises instead of the maths. Every question records the curriculum it practises, in both of the syllabuses Australian primary schools actually use.
Answers are folded into a profile of what the child can do now, per topic and per year, which does two jobs at once. It decides what to ask next, weighting the pool towards what they are finding hard. And it is what a parent reads: which topics need a hand, which way each is going, and whether the last fortnight went anywhere. Beside the lesson sits a game - ninety seconds against the clock, where the whole family keeps a record - deliberately walled off from everything the lesson's rules protect.
Key features
- Questions are generated, not stored
- A template declares its variables, its constraints and an expression for the answer, so it produces an endless supply of questions at one difficulty rather than a bank that runs out. Three hundred and fifty ship, one file per school year.
- A safe expression language
- Templates are authored outside the app by AI, which makes them untrusted input, so evaluating them is a small hand-written parser rather than eval. Variable and function lookups go through null-prototype tables.
- Some questions are a picture
- Eleven kinds of diagram - shapes, angles, clock faces, spinners, number lines, nets, graphs - generated from the same seed as the question rather than chosen from a set of images. Space and Statistics are the strands a sentence cannot ask.
- No drawing may become the answer
- A figure that never varies teaches a child to recognise the picture rather than the maths, and the app would call the topic mastered on the strength of it. So every template is drawn fifty times at build and refused if one answer always came with the same picture.
- Practice that leans towards the hard parts
- Once a topic has been answered enough times to judge, it takes a larger share of the questions. Held to under half a sitting, spread out rather than drilled, and nothing is ever ruled out entirely.
- Mastered topics come back later
- A topic answered well goes quiet, then returns days or weeks on depending on how many separate days it has been known. The gap is the point: recall that has had time to fade is the recall worth practising.
- Every answer given on screen
- A number pad, an A to Z pad or tappable choices, chosen from the question itself. The iPad's own keyboard never opens, so it never covers the question and the targets stay large and in the same place.
- Read aloud, for a child who cannot read yet
- A speaker button reads the question out, and tapping the question repeats it. It sits on the child's own screen rather than behind a parent's sign-in, because the person who needs it is the one who cannot read a settings screen.
- A daily goal a parent can set
- Questions or minutes a day, drawn as a bar with no numbers on it. A floor and never a cap: nothing stops a child carrying on past it, and a day they miss costs them nothing - the goal can only ever be met, never failed.
- Children sign in with a code
- A parent creates each child's profile and hands them a four-character code that lasts an hour and is spent when used. A child needs no email address and no password, and the year they practise at is the parent's to set.
- A report written for a parent
- Which topics need a hand and which are secure, each with a real question to try together, over four weeks of practice and the last few sittings. Under a handful of answers it says it does not know yet rather than guessing.
- A second grown-up can be given the report
- A parent can send a link to another grown-up - a separated parent, a grandparent, a tutor - and whoever opens it can read that child's progress. They see the report and nothing else: they cannot edit a profile, change a year or issue a login code.
- Ninety seconds, walled off from the lesson
- A speed run is the one place with a clock, a score and a number to beat. It writes no answer history, so a drill can never reach the selector that decides what a child is asked next - and the family keeps a leaderboard that a six-year-old can top on the easy modes.
- Traceable to two syllabuses
- Every template cites the Australian Curriculum content description it practises, the NSW outcome, or both - checked at build against the codes each syllabus actually has, and against the stage a template's year falls in. The app lists them year by year, read from the shipped questions.
Screenshots
Landing: The page a parent decides from, and the only one the app shows to somebody who has not signed in. Both ways in sit in the bar as peers: a grown-up signs in with Google, a child types the four characters they were handed.
Home: Where a child starts, on the iPad the whole app is sized for. Two ways to play: practice at the year their parent set, and a speed run, which has no school year at all. The day's goal sits above both, and the run of days and the stars earned stay in the corner, out of the way of the questions.
Answering: One question and the pad that answers it, and nothing else. The screen is a fixed height that never scrolls, so the pad cannot end up below the fold and the tablet keyboard never opens over the question. The lit speaker means this question is being read aloud - the one control a child who cannot read yet has to find.
A question that is a picture: Eleven kinds of diagram, drawn fresh for every question. This triangle's tilt and proportions are random, and that is the point. A shape drawn the same way every time teaches a child to recognise the picture instead of the maths - and the app would mark the topic mastered on the strength of it.
Hints: Help is asked for rather than offered. A child who wants a way in taps the lightbulb; a child who does not is never shown the method, so the hint costs nothing to have available.
Speed run: Ninety seconds, one mode, and how many you get right. There is no wrong answer to give: a digit that can no longer become the answer clears itself and leaves the same question up, so the only way through is forward and the score is simply how far you got.
Result: A first run is deliberately not a record, so the fanfare always means somebody beat their own score. The line under it appears only when the run moved them up the family board.
Family leaderboard: The one screen in the app that shows faces and no names, because it is the screen a child who cannot read yet reads for themselves. Each of the twenty-six modes keeps its own board, so the easy ones are genuinely winnable by the youngest player in the house.
Curriculum sources: What the questions are written against, in the product rather than in a README. Two syllabuses, because a NSW school teaches the NSW one and not ACARA directly - and the two halves look different because the licences do: ACARA's wording is quoted, NESA's is cited and never reproduced.
Progress report: What a parent opens the app to see. Not a grade, but where to help: the topics going badly, each with a question to sit down and try, the ones solid enough to leave alone, and whether the last fortnight moved. The days are counted in the child's timezone, not the reader's.
Sharing: Pick which children the link covers, send it, and whoever opens it can read how those children are going from then on. The link works once and expires after a week. The access it gives them lasts until you take it back, which you can do at any time.
Child profiles: Setting a child up takes a name, a picture, a year and, if a parent wants one, a daily goal. The code beside it is how they sign in, big enough to read out across a room, good for an hour and spent the moment it is used.
Stack
- Next.js
- TypeScript
- Prisma
- PostgreSQL
- Auth.js
- Tailwind CSS
- Recharts
- Vitest