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

Comments
Nothing yet. Say the first thing.
Sign in to join the conversation.