RSS Amplifier

The Nhoj Podge · Feb 3, 2026

Extracting a quiz engine

0
Sign in to vote or save

Nhoj · The Nhoj Podge

With Claude Code, I’ve been working on a system design practice tool. It’s on nhoj.com, which has been hosted on GitHub Pages since last year. GitHub Pages sites are static, so there’s no server. Instead, it uses simple HTML, CSS, and JavaScript to present questions to the user. It’s designed to work well on mobile devices.

I realized that the code behind this tool could be generalized into a template for a quiz on any subject. This weekend, I extracted the brain from the tool into OpenQuizzer (link to GitHub repo). This extraction/migration took a few hours. First, I had Claude mark all the things that could be extracted, then I created the new repo and put the quiz engine code there. Finally, I changed my System Design Practice tool into an instance of OpenQuizzer. If I want to update, it’s simply a matter of copying the latest files to the tool.

I’m most proud of the projects’ CLAUDE.md files. Claude wrote them, but the contents were mostly my ideas. Some of the things included:

  • Readability as a non-functional requirement — less advanced models or humans should be able to make sense of the code

  • Self-review loop: the coding agent reviews the code, fixes the code, and iterates until there are no issues

  • Meaningful tests: not too many, not too few

  • Update the CLAUDE.md as we develop the project and learn more

This morning, I was on the train and tried to pull up System Design Practice on my phone, but it was blank! It turns out that Claude had added an extra bracket, prematurely closing an array in config.js. Claude chat helped me fix the bug on my phone. When I got home this evening, I had Claude Code add unit tests for config.js and a pre-commit hook to run the tests. I added a corresponding hook to OpenQuizzer. I can’t use CI just yet because I push directly to main.

No posts

Read the original on nhoj.substack.com

Comments

Nothing yet. Say the first thing.

    Sign in to join the conversation.