[{"data":1,"prerenderedAt":151},["ShallowReactive",2],{"portfolio-pendusk":3},{"id":4,"title":5,"banner":6,"body":7,"client":121,"description":122,"extension":123,"image":33,"keywords":124,"meta":131,"navigation":132,"path":133,"seo":134,"slug":135,"stem":136,"tags":137,"technologies":141,"thumbnail":33,"url":108,"__hash__":150},"projects/projects/pendusk.md","Pendusk","space_pnkchk",{"type":8,"value":9,"toc":113},"minimark",[10,15,19,27,34,38,41,52,58,70,76,83,89,92,98,102],[11,12,14],"h3",{"id":13},"why-im-building-it","Why I'm Building It",[16,17,18],"p",{},"Every AI writing tool I tried had the same tell: it wanted to write the book for you. Paste a chapter, get back a rewrite. And once a model has rewritten your prose, an honest question appears that never goes away — whose book is this?",[16,20,21,22,26],{},"Pendusk is built on the opposite bet. It's a writing environment for novelists that's genuinely good with the AI turned off — fast, local-first, offline-capable — and when you do turn the AI on, it's held to one hard rule enforced in the architecture, not the marketing: ",[23,24,25],"strong",{},"it proposes, it never writes."," There is no mode, setting, or prompt that lets a model type into your manuscript. Feedback arrives as margin comments and chat; story-bible entries the AI drafts land as pending proposals until you accept them. Every word on the page is yours, and the app can prove it.",[16,28,29],{},[30,31],"img",{"alt":32,"src":33},"The page is the interface — prose front and center, everything else stays quiet","/img/projects/pendusk/editor.png",[11,35,37],{"id":36},"how-it-works","How It Works",[16,39,40],{},"The manuscript lives in your browser first: TipTap (ProseMirror) for the editor, Yjs CRDTs for the document model, IndexedDB for persistence. Offline isn't a degraded mode — reading, writing, importing, exporting, and your story bible all work with no connection, and a Hocuspocus sync server reconciles across devices when you're back. Spell-check runs entirely on-device with Hunspell dictionaries, and every project keeps its own custom dictionary — invented names get learned once and travel with the book.",[16,42,43,44,47,48,51],{},"Around the page sits the craft tooling: a ",[23,45,46],{},"story bible"," (characters, places, lore — twelve categories), a versioned ",[23,49,50],{},"constitution"," that sets the rules every AI surface must obey (style, banned words, point of view, content lines), chapter snapshots, and clean exports — Markdown always and forever, EPUB 3, and standard-manuscript DOCX.",[16,53,54],{},[30,55],{"alt":56,"src":57},"The writing partner reads the chapter you're in — and answers like an editor, not a cheerleader","/img/projects/pendusk/partner.png",[16,59,60,61,64,65,69],{},"The AI layer is deliberately quiet. A chat partner that has read your constitution, your accepted bible, and the open chapter. Anchored margin comments you accept or dismiss. And the ",[23,62,63],{},"Editorial Pass"," — a cold read of chapters you choose by a ",[66,67,68],"em",{},"different"," model family than your partner, through four lenses: prose, structure, continuity, character. Costs are honest: every call is ledgered with tokens and dollars, and expensive actions show an estimate before you run them.",[16,71,72],{},[30,73],{"alt":74,"src":75},"Pick your editor like you'd pick an editor — each model card says what it's good at and what your manuscript would cost","/img/projects/pendusk/editorial.png",[16,77,78,79,82],{},"Because nothing can write into the manuscript, Pendusk can generate an ",[23,80,81],{},"Authorship Record"," — a dated evidence document from the provenance trail showing what was proposed versus what you accepted, useful for copyright registration and publisher disclosure in a world that increasingly asks.",[16,84,85],{},[30,86],{"alt":87,"src":88},"The story bible — and anything the AI proposes stays pending until you accept it","/img/projects/pendusk/bible.png",[16,90,91],{},"The stack: Vue 3 SPA on Cloudflare Pages, REST API and sync server as Node 24 containers on Fly.io, Supabase for Postgres (row-level security on every table) and auth, Stripe for billing. AI calls route through OpenRouter with a bring-your-own-key model — you pay the provider directly, and the app shows you every cent.",[16,93,94],{},[30,95],{"alt":96,"src":97},"Excellent with the AI turned off","/img/projects/pendusk/landing.png",[11,99,101],{"id":100},"whats-next","What's Next",[16,103,104,105,112],{},"Pendusk is live at ",[106,107,111],"a",{"href":108,"rel":109},"https://pendusk.com",[110],"nofollow","pendusk.com",". The Writer plan ($10/mo) covers cross-device sync and BYO-key AI; a Partner tier with managed keys is wired and waiting. On the roadmap: a desktop client, richer editorial lenses, and dogfooding it on an actual novel — which is, after all, the only benchmark that matters.",{"title":114,"searchDepth":115,"depth":115,"links":116},"",2,[117,119,120],{"id":13,"depth":118,"text":14},3,{"id":36,"depth":118,"text":37},{"id":100,"depth":118,"text":101},null,"A writing environment for novelists that's excellent with the AI turned off — and when it's on, it proposes, it never writes. Every word on the page is yours.","md",[125,126,127,128,129,130],"writing","novelists","ai","local-first","saas","vue",{},true,"/projects/pendusk",{"title":5,"description":122},"pendusk","projects/pendusk",[138,139,140],"Personal","SaaS","Active Project",[142,143,144,145,146,147,148,149],"Vue 3","TipTap / ProseMirror","Yjs + Hocuspocus","Node 24","Supabase","Stripe","Fly.io","Cloudflare Pages","nWj8sKXSJJtZbLU0jpy9XTbLc4GmSdCpa_Gc28c6plI",1784445133495]