New
Apps 1,601Makers 1,599This week 1,585
Promote your app−30%
Puzzle Press screenshot 1
0views in
the last 30 days

Puzzle Press

Print-ready KDP puzzle books in the browser: word search, sudoku, mazes, criss-cross and themed...

Built with Claude Code

by walkertbrown · Unclaimed · added Oct 29, 2026
no ratings0 comments

A free KDP puzzle book generator: makes a print-ready word search, sudoku, maze, criss-cross or crossword book for Amazon KDP — interior PDF and full-wrap cover — in the browser. Nothing is uploaded.

Live: https://puzzlepress.bananafest-destiny.com

Building a word search book and its cover in the browser, then sudoku, mazes, criss-cross fill-ins and crosswords

Five puzzle types — word search, sudoku, mazes, criss-cross fill-ins and themed clued crosswords, plus a large-print preset at 8.5×11 sized for older eyes. Up to 200 puzzles, six KDP trim sizes, fonts embedded, answer keys, front matter, page numbers, and a cover whose spine width comes from the page count of the book you just made.

Free to use, and it makes the entire book. A free book carries one small line in each page footer and a cover marked PREVIEW; $19 once removes both. No account, no subscription.

A Bananafest Destiny app. Making activity books for younger readers? Trace Press makes KDP handwriting workbooks the same way: A–Z tracing pages, numbers 0–9, sight words and a matching cover, in the browser.

See it without running anything

Every sample below was generated by this code and is committed to the repo under public/samples/. Interiors are 20 puzzles with solutions; each cover is the single full-wrap PDF KDP asks for, with the spine sized to that book's page count.

Five front covers from the samples: word search, sudoku, large print word search, crosswords and mazes, each with a two-colour title, a puzzle-count sticker and one of its own puzzles

Type Interior Cover
Word search 6×9 wrap
Large print 8.5×11 wrap
Sudoku 6×9 wrap
Mazes 6×9 wrap
Criss-cross 6×9 wrap
Crosswords 6×9 wrap

Why the code is public

Because the central claim is a privacy claim — your word lists never leave your browser — and there is no way to check that from the outside except by reading the thing. Generation and PDF rendering are src/generator and src/pdf, both entirely client-side. The only request that ever carries user data is the unlock email. test/privacy.mjs drives a real browser through making and downloading a book and fails if anything else leaves the page.

Licence — read this before you copy anything

There is no LICENSE file, which means all rights reserved. This is source-available, not open source. Read it, check it, learn from it, quote it, file an issue. Do not redeploy it.

What it produces

A PDF that meets Amazon KDP's paperback manuscript rules:

  • Six trim sizes (5×8 → 8.5×11), bleed or no bleed.

  • Inside (gutter) margin from KDP's page-count table, swapping sides by page parity so it binds correctly.

  • Title page, copyright page, one puzzle per page, a Solutions divider forced onto a right-hand page, and solutions packed as densely as 7pt answer letters allow: 6 a page (4 on small trims), stepping down to 4, 2 or 1 when the grids are big, e.g. a 30×30 grid typed into a 5×8 book gets one a page. The page count shown before download already includes that, so the cover's spine matches the interior.

  • KDP's measurable interior rules, from the Paperback Submission Guidelines, are each tested against rendered PDFs. test/kdplines.mjs reads the drawing operators of every book type at every trim, including typed 21×21 and 30×30 grids:

    • lines: "a minimum thickness/weight of 0.75 point";
    • type: "Minimum font size: 7 points";
    • fills: "a minimum grayscale fill of 10%".

    test/inkcheck.mjs rasterises every page and checks each pixel of ink sits inside KDP's margins, with 1/32" to spare.

  • Large print (word search and sudoku) is large print on every page, answers included. KDP says large-print books "usually have a font size of 16 points or higher". At 6-up the answer letters are about 8pt, so a large-print book gets one answer grid a page, and every word a reader reads is 16pt or more (checked by test/largeprint.test.js, which records every size drawn). At 8.5×11 a book of up to 50 puzzles still fits in KDP's flat-rate 110 pages.

  • Notes pages to reach an even page count, and no further: a short book is not filled out to KDP's 24-page minimum — a one-puzzle book is ten pages and stays ten pages. The app warns you on screen when your settings produce a book KDP will reject for being too short, and that warning is what protects you, not extra pages. (This README claimed otherwise until 2026-09-14. It was wrong, and support was answering "KDP rejected my file" out of the wrong model.)

  • Fonts embedded and subset (Liberation Sans, SIL OFL) — KDP rejects manuscripts with un-embedded fonts.

  • A full-wrap cover: spine width from the page count and paper stock, bleed and barcode area kept clear, and every word at least 0.125" inside the trim lines, as KDP's cover guidelines ask (test/coversafe.mjs checks that in pixels across every colour, trim and a deliberately over-long title and author). One of eight colours (picked from the title, or chosen), a two-colour title in Lilita One (SIL OFL), the book's own puzzle on the front with answers ringed in highlighter colours, a sticker with the puzzle count, a second puzzle on the back as printed inside, and a strip for the puzzle count, large print and solutions.

Free calculators, no sign-up

The KDP arithmetic this code had to get right internally is also published as single-purpose pages, because getting any of it wrong is a rejected file or a book that earns less than it should:

  • Royalty calculator — printing cost and what you keep. Printing is flat $2.30 on regular trim from 24 pages to 110, and KDP pays 60% at $9.99 and 50% below it, so $9.98 earns a dollar a copy less than $9.99. It prices groundwood paper too — KDP's third paperback stock, black ink only and cheaper to print than white or cream — and says plainly that Expanded Distribution's 40% doesn't apply: KDP lists puzzle books, word search, sudoku, crossword and mazes as "content not currently accepted" there.
  • Spine calculator — spine width from page count and paper (white, cream, groundwood or colour), and the full cover canvas in pixels at 300 DPI, which is what design tools actually ask you for.
  • Margin calculator — the inside margin for your page count, which steps up at 150 pages.
  • How to make a puzzle book — the 24-page minimum, the even-page rule, and the traps around both.

Puzzle quality

Anyone can scatter letters in a grid. Every type promises exactly one answer, and each promise is kept by construction or by check rather than by hope — because a puzzle with two solutions is a one-star review.

  • Word search — every word appears exactly once. Crossing words can accidentally spell another puzzle word a second time; those layouts are discarded and regenerated, and palindromes are accounted for. No word nested inside another in the same grid (DEER and REINDEER never share one, though both stay in the pool for other puzzles). Filler letters are screened so random fill never spells something you would not want in a children's or grandparent's book — words you chose are left alone. Every puzzle in a book gets a distinct word set. Three difficulties.
  • Sudoku — clues dug out in symmetric pairs; before each removal a solver counts solutions with a cap of two, and the pair goes back if it finds two. Four difficulties, plus 6×6 and 4×4 for kids' books.
  • Mazes — iterative DFS carve, so the maze is a spanning tree and the path between any two cells is unique by construction. Nothing is punched open afterwards, which is where other generators produce two routes or sealed pockets.
  • Criss-cross fill-ins — verified to have exactly one valid fill.
  • Crosswords — open interlocking grids, 8–22 answers on a subject, with 2,346 clues written for the tool. No clue contains its answer; the test suite checks that on every build. Paste word — clue lines for your own.

Seeded and deterministic throughout — the same seed rebuilds the same book exactly.

Develop

npm install
npm test                # generator + PDF unit tests
npm run build           # bundle the UI to public/
npx wrangler dev        # local Worker + site
npm run test:privacy    # real browser, watches the network
npm run test:unlock     # the paid path, against a stub Stripe, no money
npm run sample          # regenerate the public sample book

Deploy is npx wrangler deploy with a Cloudflare token that has Account → Workers Scripts → Edit.

The suites ending .mjs mostly drive a real browser with Playwright; a few need pdftotext (poppler-utils) to read the generated PDFs. That matters more than it sounds. The watermark test used to grep the PDF bytes for the words, which can never match, because pdf-lib subsets the embedded font and the text is glyph ids inside a compressed stream. The single claim the product makes about what $19 buys was being checked by an assertion that could not fail.

Layout

Path What
src/generator/ the five generators, themed word lists, book batching, seeded RNG
src/pdf/ KDP page geometry, imposition, cover wrap, the pdf-lib renderer
src/ui/ the single-page app and licence state
src/worker.js Cloudflare Worker: static assets, /config.js, /api/verify
test/ unit tests (node --test) and real-browser runs
scripts/ build, deploy helpers, traffic dashboard, support lookup

There was a marketing/ directory here — launch plans, the support runbook, the prepared answers to launch-day questions. It now lives in the repo this one is split out of, https://github.com/walkertbrown/vibe-cider, which is the public build log for the whole project: it is one click away, not hidden. The split is about what belongs where — this repo is the product and its source — and not about secrecy, and it would be dishonest to imply otherwise. Two test files check copy against that directory and skip those checks when it is absent, which is what this repo looks like.

Who made it

An agent — Claude (Opus 5, later Opus 5.5) in Claude Code — running as the sole worker on the project, under a boss who answers factual questions and buys things and does not workshop the product. The full plan-and-outcome log, including the parts that went wrong, is in walkertbrown/vibe-cider: what was planned each day in plan/, what actually happened in actual/, and what was learned in LEARNED.md.

Description taken from the repository README.

Ratings

–
0 ratings
5 0
4 0
3 0
2 0
1 0

Rate this app

Sign in to rate

Comments 0

Sign in to comment

No comments yet.

Related apps

#puzzles · #kdp · #print