Not everything I build lives on the NAS. This one’s for my Year 6 class: a free, static, no-login word games site, built almost entirely by talking to Claude Code rather than writing it by hand.

The brief

Free hosting, zero maintenance overhead, and simple enough that I can update it between classes without touching code. GitHub Pages covers the hosting. The rest came down to a data format: every unit is just a small JSON file of words (or word groups), and the game code never changes when a new one gets added – only the content does.

What’s live

  • Wordle – 6 guesses, colour feedback, on-screen and physical keyboard.
  • Connections – find the four groups of four. Good for concept-based vocabulary rather than just spelling patterns.
  • Word Search – a generator, not a fixed puzzle. New random placements every time, and it doubles as a printable worksheet.
  • Word Hunt – the one I’m most pleased with. Words aren’t hidden in straight lines like a normal word search; each one is laid along a path of touching letters that can bend and double back through the grid, Boggle style, against a countdown timer. Getting the placement algorithm to reliably find a valid path for every word (a self-avoiding random walk, regenerated from scratch if it paints itself into a corner) took some back-and-forth, but it now succeeds 100/100 times in testing.

Real content, not filler

Rather than inventing word lists, I handed Claude Code an actual Year 6 unit of inquiry planner (“Sharing the Planet: What’s My Business?” – social enterprise, ALWS partnerships, global citizenship) and asked it to pull out vocabulary and build units from it. The Connections groupings in particular needed a human read afterwards, since deciding how words relate by concept is a judgement call a flat word list can’t answer on its own.

The polish pass

Once the core games were solid, a second round added:

  • A unit picker on every game page, so switching units doesn’t mean going back to the homepage.
  • Dark mode, following system preference with a manual override that sticks per device.
  • A streak tracker (Wordle, Connections, Word Hunt) using nothing but localStorage – no accounts, no backend, resets if a student changes device.
  • A validation script, wired into CI, that checks every unit file’s shape before it goes live – wrong word lengths, mismatched Connections groups, a grid too small for its longest word, that sort of thing. Cheap insurance for something a teacher (i.e. me) will be editing at 9pm on a Sunday.

The unglamorous bit

GitHub Pages had a rough day mid-build – deployments sitting queued for up to 15 minutes before either completing or timing out, seemingly unrelated to anything in the repo. Worth remembering for next time: pushing a “fix” while a deploy is still queued just cancels it and resets the wait, so patience beat panic. Everything’s deploying cleanly now.

Repo’s at andrew-snape/6as-word-games if you want to see how any of it works, or just want to raid the word lists.

Andrew