01
Pick a topic
A lighthouse keeper in 1912. A cartographer who finds a map they drew in a dream. Anything you can phrase in a sentence.
A choose-your-own-adventure gamebook
Hand it a topic. Each page arrives written and illustrated as you turn it -- two or three paths always waiting at the bottom.
How it works
01
A lighthouse keeper in 1912. A cartographer who finds a map they drew in a dream. Anything you can phrase in a sentence.
02
Claude writes 150-250 words of second-person present tense. FLUX paints a matching illustration. A depth model turns it into a subtle 3D scene that pans as you read.
03
One click and a narrator reads the page in your ear. Neural Azure voice, auto-generated while the page loads -- no waiting at the click.
04
Two or three distinct choices at the foot of each page. Click one; the next page is written around your decision. Share the link when you're done.
Under the hood
Narrative
Claude Haiku 4.5 generates every page as a structured tool call -- a narrative, an image prompt, 2-3 divergent choices, and a running summary that becomes the next page's memory. Prompted for hooks, stakes, dilemmic choices, and depth-friendly composition.
Art
FLUX.1-schnell renders the illustration. A single style descriptor, fixed at story start, keeps every page looking like it came from the same book. fal.ai fills in if Together rate-limits.
Narration
Microsoft Edge's Azure Neural voices, called through a Python sidecar and cached per page as MP3. First play pays the synthesis cost; every replay is a static file.
Depth & parallax
Depth-Anything-V2 runs on CPU in a second sidecar, producing a per-pixel depth map. A three.js shader displaces a plane mesh by that depth; a virtual camera orbits it gently, and closer pixels slide further than the background. Auto-tuned per image.
Safety
Topic blocklist before generation, an explicit PG-13 content policy in the system prompt, and an image-prompt validator before anything reaches the painters.
Architecture
Go hexagonal backend with Python sidecars for TTS and depth, on Oracle Cloud ARM. Next.js static export on Cloudflare Pages. SQLite for story + user persistence, Google OAuth for sign-in. Each provider is one adapter file behind a port.