Muneer Alam Work / BOOP

A word list became a book. Then it became a game.

Book Of Organized Puzzles began as a Python word-search book generator. Its web version grew into two experiences: create a printable puzzle book, or stay in the browser and play, with touch, hints and saved progress.

BOOP / contribution
Created the Python generator and developed its web evolution. The original placement routine builds on Christian Hill’s SciPython word-search work, credited in the source.
Timeline & status
Original CLI, then web development and January 2026
Web project; original CLI archived
Built with
Python · FastAPI · React · SVG / PDF
Creative softwareBUILD NOTES / 2025–2026
BOOP / project preview
BOOP’s real puzzle-book creation interface with a paper-inspired layout and topic controls.
BOOP↗
View full project screenshot ↗
The BOOP web creation interface, as documented in the project’s published development story.

A list of words is not a puzzle book yet. It needs a grid, a set of placements, a page someone can read, an answer they can check, and enough variety to make the next page worth turning.

BOOP stands for Book Of Organized Puzzles. It began as a Python command-line generator for word-search books. The first web version put a React form in front of that generator. It could produce a PDF, but a successful download was not the whole product.

Before there was a Play button

The original program groups words by topic, filters them by length and samples sets for the requested puzzles. Placement attempts build grids; the rendering path produces puzzle and solution SVGs, then assembles covers, topic sections and answer pages into a book.

The placement routine builds on Christian Hill’s SciPython word-search article. That credit belongs in the story because the interesting work in a product is often connecting an existing algorithm to all the decisions around it.

Random generation has real failure cases. A word pool can be too small, or a requested set can fail to fit. The web backend returns an explicit placement error rather than quietly delivering a book with missing puzzles. It also gives each generation request its own temporary directory so two books do not mix intermediate files.

The rebuild was about finishing

The June 2026 Finish-Up-A-Thon gave me a reason to revisit what already existed. In my published development notes, I described the difference between the generator working and the application feeling finished: feedback, accessibility, a coherent visual identity and a mobile experience all needed attention.

The paper-inspired design now belongs to the product. It fits the thing being made, rather than treating book generation as another generic upload form. People can choose built-in or custom words and artwork, configure book settings, inspect examples and see progress while generation runs.

The README records a useful, specific cleanup result: one generated Wordo sample PDF went from 26.8 MB to under 0.5 MB. That is a documented example, not a promise about the size of every possible book.

Then the browser became the puzzle

The biggest change was allowing someone to play without first generating a document. Play brings its own requirements: mouse and touch selection, keyboard controls, difficulty choices, a timer, hints and progress that survives a refresh.

The real BOOP browser word-search game, showing a playable letter grid and its word list.
Play is a separate way to use BOOP, rather than a preview pretending to be a game.

A printable puzzle does not need to remember where a person dragged their finger. A browser game does. The current play flow includes six modes, including a circular Bonus variant, and local progress so the interaction can continue after leaving the page.

Create and Play share the idea of arranging words, but they are different products from the user’s perspective. One ends with an artifact to print or share. The other keeps the interaction on the screen.

Keep the earlier version in the story

The original CLI is archived, while BOOP-web contains the later development. A pre-Finish-Up tag preserves the earlier web state, giving the visual and interaction changes a real point of comparison.

The frontend and Python generation backend are deployed separately. An available homepage alone is not evidence that every book-generation path is healthy; the repository remains the place for current backend setup and deployment information.

What I like about BOOP is the change in the question. At first it was “can this generate a puzzle?” Later it became “would someone enjoy spending time with it?” The algorithm still matters. So does everything that happens before and after it.

Code & further reading

Written by Muneer Alam · Reviewed 1 November 2026