@leumas/coloringbooks-web
Leumas Coloringbooks at coloringbooks.leumas.tech — coloring pages, puzzles and activity books: generate them, play them in the browser, print them, bind them into a book and sell it.
@leumas/coloringbooks-web — Leumas Coloringbooks at coloringbooks.leumas.tech
Make a page. Make a book. Print it, colour it, sell it. Six kinds of activity page — coloring, connect the dots, sudoku, crossword, word search, maze — generated on request, playable in the browser, printable with an answer key, bound into a book with a cover, exported to one PDF, and sellable on the Leumas app store.
Status: built. Blueprint: products/TODOS/coloringbooks.leumas.tech.md (§6a records the decisions made while building).
What is where
| Piece | Lives in |
|---|---|
| The kinds — schema, generator, print, answer key | @leumas/activity-pages (shared/packages/activity-pages/src/kinds/*) via definePageKind |
| The playable boards | @leumas/activity-pages/react (PageView, SudokuBoard, WordSearchBoard, MazeBoard, CrosswordBoard, ImagePageView) |
| The manifest a browser needs alone | @leumas/activity-pages/manifest |
| The book renderer | renderBookHtml — cover, pages, answer-key section, one document |
| Puzzles | the puzzles adapter (shared/engines/adapters/domain/puzzles) through an injected ctx.run — seeded, unique sudoku |
| Line art and crosswords | the generation lane (createLlm, the media generation registry) through the same injected ctx |
| The API | products/leumas-api/src/{controllers,routes}/activity.js → /api/activity/*; dynamic activity_pages, activity_books, activity_gen |
| The PDF job | products/leumas-api/src/jobs/activityExport.js — @leumas/jobs activity-export, through the generation engine's Puppeteer path |
| Selling | a digital-product listing in the app store's review queue (marketplaceStore.upsert, status: submitted) |
| The money | policy.js activity.* — floor: generate, play, 3 image pages a day; tiers: save, book (5/50/∞), clean print, publish, sell, 60/300/∞ image pages a month. No plan row. |
| This site | src/content/pages.js (the prose as data) · src/content/samples.generated.js (seeded samples for the tiles) · src/screens/* |
| Guards | pnpm check:coloringbooks-public · pnpm check:activity-pages · pnpm smoke:coloringbooks-site |
What is free and what is not
A puzzle is arithmetic and is free for a stranger, played and printed (watermarked) with its key. A line-art page costs an image generation: an account gets three a day, a membership a monthly allowance. A book — and a clean print, publishing and selling — is what a membership buys. Nothing a member publishes or sells appears before a person reviews it, because the audience is children.
Why this can read a visitor's session with no configuration
coloringbooks.leumas.tech is a platform-owned Imperium site row (shared/services/index/src/coloringbooksSite.js), served by the Imperium worker behind the IIS *.leumas.tech wildcard, which forwards /api and the auth prefixes to leumas-api preserving the visitor's Host header and cookies. [warning] Never set VITE_API_BASE.
Running it
pnpm dev:api # :3000
pnpm dev:coloringbooks # :5082
pnpm --filter @leumas/coloringbooks-web build
pnpm check:coloringbooks-public && pnpm check:activity-pages && pnpm smoke:coloringbooks-site
[warning] pnpm deploy:coloringbooks copies files but carries no release stamp. Only pnpm ship applies.