The seed was DeerDevil, a single-author novel viewer I hand-tuned for one Korean dark-fairy-tale anthology — twelve episodes, a typography of its own, antler-shaped dividers, and a typewriter-paced opening. Over a season it became the visual canon for a platform: any writer can claim a slug at /{author}, describe a mood in plain Korean, and watch the platform return an AI-generated theme that applies that mood to the work. The original DeerDevil still ships at its own slug, as the design reference every other writer's space is measured against.
The product is divided into three surfaces — a public author space at each /{author}, a writer dashboard covering upload, theme editing, credits, episode management, and analytics, and a platform shell for discovery. The frontend is built on Next.js, React, and TypeScript with Tailwind CSS. The backend is a NestJS service. Everything runs on Google Cloud — the platform launched on Azure, and the move across clouds was itself a solo job.
An author describes a mood in their own words, and the platform turns that into a typed record covering colors, typography, layout, and decorations. New readers receive a default view from a set of prepared presets.
Manuscripts arrive however writers actually write — Markdown, plain text, Word, and the Korean HWP formats — and are normalized into one typed block structure before anything renders. Readers can use bookmarks, per-episode progress that survives a reload, subscriptions, likes, threaded comments, and time-limited share links that let people read an episode without an account.
AI features are written defensively. Theme generation forces structured output. Novel analysis runs a three-track inspection — consistency, tone, character. Long-running work is abortable, so a credit refund executes the moment a client cancels. To check the basis for the analysis, every reported issue must cite a short verbatim quote from the episode text, validated before the response is allowed out.
Credit pricing includes a safety margin so revenue exceeds the AI cost. A dedicated cost-accounting agent owns the pricing table; a sensor runs the math.
The checkout provider acts as merchant of record; webhooks are processed idempotently, so a replayed event can never double-credit; a reconciliation job re-checks the ledger against the provider on a fixed cadence; and a circuit breaker stands between the platform and the payment API, so a provider outage degrades gracefully instead of cascading.
I use Skills and specialized sub-agents to develop, test, research, and review the code and design. Automated checks cover cost margins, atomic credit updates, refunds, exposed secrets, and differences between the intended and deployed configuration. I record architectural decisions with their dates.
Live today. I used the same development methods for this site.




