NovelFlame
Built a token economy and a CCBill payment integration across 2 specs. Watched competitor reviews name counting-currency UX as the #1 complaint in the category. Ripped out both and shipped a flat subscription instead.
Why this exists
NovelFlame is an interactive fiction platform: readers pick a genre and premise, and the app generates a branching story with inline images and a completion video, choice by choice. I run it solo, end to end, from the Terraform-equivalent that provisions the Cloudflare zone to the CI pipeline that gates every merge. The interesting engineering problem isn’t the story generation itself, it’s everything around it: a payment system that has to be right the first time because it’s real money, a content filter that has to run on every output because the input is an LLM, and an infrastructure and release pipeline built for a team of one.
The product also changed shape under me. It shipped with a token economy and a CCBill integration, and by spec 122 the data said that model wasn’t working: 0 paying users, and competitor reviews naming counting-currency UX as the category’s top complaint. Rather than keep patching a model the market was telling me not to build, I killed it and shipped a flat subscription instead.
Architecture
The flow is 1 direction with 2 gates. A reader’s request passes Supabase’s SSR auth check and the subscription gate (free tier caps at 3 stories per 30 days; Plus is unlimited) before it ever reaches an LLM. The input safety scan runs the same 2-layer filter, the OpenAI Moderation API plus custom rules, that runs again on the way out, so a prompt has to clear the gate twice: once before generation, once before display. Generation itself is provider-routed rather than locked to 1 vendor: xAI’s Grok is the default story and video model, OpenAI covers the utility tier and character-consistency images, and Anthropic’s Claude runs a separate editorial quality pass over demo content. Media lands in Cloudflare R2 and streams back over SSE, segment by segment, so a reader sees text and images appear progressively rather than waiting on the full generation. Underneath all of it, a Payments Gate (Stripe on web, Apple IAP on iOS) controls access, and the whole app is provisioned through OpenTofu and deployed through a GitHub Actions to Docker to GHCR pipeline onto Railway.
What shipped
189 specs took NovelFlame from a forked prototype to a live, solo-operated product. Some of the most valuable work wasn’t a new feature. It was a security audit that found 4 real financial bugs already in production, including a payment webhook silently failing to credit real customers, and fixed each with its own targeted mechanism rather than 1 patch that half-covered all 4. It was infrastructure-as-code that turned roughly 30 hand-configured cloud resources into version-controlled state, importable and idempotent. And it was a monetization reset that killed a fully-built token economy and CCBill integration once the data, 0 paying users and a UX complaint pattern from competitor reviews, said that model wasn’t the right one, replacing it with a flat Stripe and Apple IAP subscription instead.
The throughline across all of it is the same: a solo operator’s infrastructure has to be legible enough that 1 person can trust it, and honest enough to change course when a shipped feature turns out to be the wrong bet.


