{
  "schema": "leumas.docs.page/1",
  "id": "pkg:@leumas/coloringbooks-web",
  "slug": "products/coloringbooks-web",
  "kind": "capabilities",
  "bucket": "product",
  "title": "@leumas/coloringbooks-web — Leumas Coloringbooks at coloringbooks.leumas.tech",
  "name": "@leumas/coloringbooks-web",
  "eyebrow": "Leumas Coloringbooks at coloringbooks.leumas.tech",
  "chip": null,
  "summary": "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.",
  "keywords": [
    "coloring pages",
    "printable puzzles",
    "sudoku generator",
    "word search maker",
    "activity book"
  ],
  "audience": "both",
  "funnel": {
    "product": null,
    "cta": null
  },
  "body": "# @leumas/coloringbooks-web — Leumas Coloringbooks at `coloringbooks.leumas.tech`\n\nMake a page. Make a book. Print it, colour it, sell it. Six kinds of activity page — coloring,\nconnect the dots, sudoku, crossword, word search, maze — generated on request, playable in the\nbrowser, printable with an answer key, bound into a book with a cover, exported to one PDF, and\nsellable on the Leumas app store.\n\n**Status: built.** Blueprint: [`products/TODOS/coloringbooks.leumas.tech.md`](../TODOS/coloringbooks.leumas.tech.md)\n(§6a records the decisions made while building).\n\n## What is where\n\n| Piece | Lives in |\n|---|---|\n| The kinds — schema, generator, print, answer key | `@leumas/activity-pages` (`shared/packages/activity-pages/src/kinds/*`) via `definePageKind` |\n| The playable boards | `@leumas/activity-pages/react` (`PageView`, `SudokuBoard`, `WordSearchBoard`, `MazeBoard`, `CrosswordBoard`, `ImagePageView`) |\n| The manifest a browser needs alone | `@leumas/activity-pages/manifest` |\n| The book renderer | `renderBookHtml` — cover, pages, answer-key section, one document |\n| Puzzles | the `puzzles` adapter (`shared/engines/adapters/domain/puzzles`) through an injected `ctx.run` — seeded, unique sudoku |\n| Line art and crosswords | the generation lane (`createLlm`, the media generation registry) through the same injected ctx |\n| The API | `products/leumas-api/src/{controllers,routes}/activity.js` → `/api/activity/*`; dynamic `activity_pages`, `activity_books`, `activity_gen` |\n| The PDF job | `products/leumas-api/src/jobs/activityExport.js` — `@leumas/jobs` `activity-export`, through the generation engine's Puppeteer path |\n| Selling | a `digital-product` listing in the app store's review queue (`marketplaceStore.upsert`, `status: submitted`) |\n| 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. |\n| This site | `src/content/pages.js` (the prose as data) · `src/content/samples.generated.js` (seeded samples for the tiles) · `src/screens/*` |\n| Guards | `pnpm check:coloringbooks-public` · `pnpm check:activity-pages` · `pnpm smoke:coloringbooks-site` |\n\n## What is free and what is not\n\nA puzzle is arithmetic and is free for a stranger, played and printed (watermarked) with its key.\nA line-art page costs an image generation: an account gets three a day, a membership a monthly\nallowance. A book — and a clean print, publishing and selling — is what a membership buys. Nothing a\nmember publishes or sells appears before a person reviews it, because the audience is children.\n\n## Why this can read a visitor's session with no configuration\n\n`coloringbooks.leumas.tech` is a platform-owned Imperium site row\n(`shared/services/index/src/coloringbooksSite.js`), served by the Imperium worker behind the IIS\n`*.leumas.tech` wildcard, which forwards `/api` and the auth prefixes to leumas-api preserving the\nvisitor's Host header and cookies. [warning] **Never set `VITE_API_BASE`.**\n\n## Running it\n\n```bash\npnpm dev:api                                     # :3000\npnpm dev:coloringbooks                           # :5082\npnpm --filter @leumas/coloringbooks-web build\npnpm check:coloringbooks-public && pnpm check:activity-pages && pnpm smoke:coloringbooks-site\n```\n\n[warning] `pnpm deploy:coloringbooks` copies files but carries **no release stamp**. Only `pnpm ship` applies.\n",
  "source": {
    "path": "products/leumas-coloringbooks/README.md",
    "blobSha": "",
    "commit": "",
    "committedAt": "",
    "provenance": "no-git",
    "bytes": 3589,
    "hash": "88d6c7cc55efd6e1064e727e7fe23ee4f0be2084"
  },
  "urls": {
    "html": "/p/products/coloringbooks-web",
    "json": "/docs/products/coloringbooks-web.json",
    "md": "/docs/products/coloringbooks-web.md"
  },
  "links": {
    "composes": [
      "pkg:@leumas/theme",
      "pkg:@leumas/ui"
    ],
    "usedBy": [],
    "product": [],
    "howTo": [],
    "skills": []
  },
  "exports": null
}
