2017-2018
A Physics Practice App for the Hungarian Érettségi
A static jQuery site I built in high school to drill past exam questions. 659 questions, a decade of past papers, still online and still used.
I needed it. In my last year of high school I was about to sit the emelt szintű (advanced-level) physics érettségi, and the practice material I could find online was either paywalled or scattered across PDFs that wouldn’t tell you whether your answer was right. So one evening I started typing past exam questions into a JSON file. A few weeks later I had something resembling a study tool, and a few weeks after that I had 659 questions covering more than a decade of past papers.
The site is intentionally small. A static frontend on jQuery, four CSS files, a JSON blob of questions, a folder of scanned diagrams from the original papers. You pick a topic (Mechanika, Hőtan, Elektromosság, Atomfizika) or hunt down a specific year’s exam, get a randomised quiz, answer, and the page colours each row green or red. Past results sit in localStorage, because the audience was high schoolers; account-less was the privacy answer.
It outgrew Firebase eventually. I moved the data to a small Express backend so I could keep editing questions without a paid plan, with a JSON file and an image folder as the storage layer. The admin routes have no auth; instead, the service stays off the public internet and I edit through an SSH-forwarded localhost. Fine for a one-person CMS, terrible advice for anything with multiple editors.
What I’d change if I were starting it now:
- Astro instead of jQuery plus a Node server. The whole thing could be one static site that re-renders on push. No backend, no CSP fiddling, no Docker.
- Markdown source, not a hand-edited JSON file. Editing questions in JSON is fine until you forget a comma at 1am and the site stops loading.
- A real licence note on the question text. The papers are public exam material, but it’s worth saying so somewhere on the page.
It’s been online in some form for eight years. Every spring I get a few emails from students asking whether I’ll add the latest year’s paper. I usually do, eventually. The thing I made for myself in 2017 is still doing its job for someone else’s last year of high school, and that’s the only metric on it I actually care about.