Fabian's Quest
My son is in Year 3 and needs to practise times tables, spelling, and a handful of other subjects every night. The available apps were either too broad, too patronising, or too keen on subscription revenue. I built him something instead.
Fabian’s Quest is a learning app dressed up as an RPG. There’s a Daily Quest—37 questions across seven rounds covering maths, scales, spelling, grammar, science, history, and geography—designed to take about ten minutes. Short enough that it happens every night regardless of energy levels. You can also take a deeper dive into any of the subjects on their own. Each correct answer earns XP, streaks build, levels unlock. The kind of feedback loop that works on a child who treats everything as a competition.

It runs on an iPad, built with React and Vite, deployed to Cloudflare Pages. No backend—player data lives in localStorage, which is fine when your entire user base shares a device and a surname. The visual language is dark navy with gold accents, chunky rounded type, and the sort of progress bars that make eight-year-olds feel like they’re levelling up in a proper game. (Claude helped with the styling—it’s not my thing at all.)
Some details worth noting:
- Procedurally generated measurement questions with inline SVG number lines—no static image assets, no question bank to exhaust
- A spelling hint system that auto-detects patterns (double letters, silent letters, tricky vowel pairs) and generates contextual clues rather than just revealing the answer
- Programmatic sound effects via the Web Audio API and text-to-speech via the Web Speech API—zero external media files
- The entire application lives in a single 3,200-line React component, which I mostly think is admirably focused but occasionally see as a future problem
- I’ve built a workflow with Claude Code to automatically update it each week when the school sends home new material
The name was Fabian’s idea. He wanted a quest.