Public API
GET /api/puzzles and /api/puzzles/:id for clients; filters for discovery.
Nona puzzle CMS
Manage nonogram puzzles for the Nona iOS app: canonical JSON in D1, WebP previews in R2, and a Hono JSON API at /api.
GET /api/puzzles and /api/puzzles/:id for clients; filters for discovery.
CRUD under /api/admin/* with Cloudflare Access JWT or service token.
puzzle_json in SQLite; optional preview_r2_key for WebP in R2.
POST /api/intake/image returns 501 until the pipeline ships.
Local dev
.dev.vars.example to .dev.vars and set ADMIN_AUTH_DISABLED=true for local API access without Access.wrangler d1 migrations apply nonadmin-db --localnpm run dev then open /admin.