
A premium digital literary magazine + podcast platform, explicitly anti-AI-generated-content, with a real-time multi-role editorial workflow.
View the product pageThe problem
Serve readers tired of algorithmic noise while supporting two opposed audiences in one codebase: fast public reader pages (SEO, archives, podcast) and a real-time, multi-role editorial admin. Every published piece must be human-written; AI assists, never authors.
.jpg&w=3840&q=75)
Architecture
A container-level view of the real system, the boundaries, the trust edges, and where intelligence and money actually flow.
Reader pages are cached (ISR); admin reads are always fresh. The editorial thread between founder and editor runs over Supabase Realtime. AI assistants are isolated to the system prompt and cannot author publishable copy.
.jpg&w=3840&q=75)
By the numbers
25
tables · 32 migrations
48
API route handlers
7
live realtime surfaces
27
unit tests (vitest)
Stack
Intelligence
Three named Anthropic Claude assistants (Sonnet 4.6), The Mirror (writing reflection), Keneilwe the Librarian (a live-archive reader guide), and the Editor’s Eye, all behind one shared HUMAN_VOICE prompt that bans the AI tells ("delve", "tapestry", "it’s not just X, it’s Y"); the same prompt quietly powers the Studio’s caption and repurpose tools. The machine can interrogate the writing; only a person can publish it.
Data model
25 tables · RLS + policies on all 25 · 8 enums · 32 migrations
Key decisions
Architecture Decision Records, the trade-offs made deliberately, in the open.
.jpg&w=3840&q=75)
The hard parts, solved
Resolved architecturally, not rhetorically: every model call sits behind Supabase auth + a role check, is constrained by the shared HUMAN_VOICE prompt to reflect and question rather than rewrite, and the Publish action is human-only. AI interrogates the writing; a person alone releases it.
A service client that forwarded caller cookies ran under the user’s JWT and dropped writes with no error, root-caused and fixed with a truly cookieless admin client, plus hardened is_admin() / my_role() with a pinned search_path (migrations 024–027).
A custom Tiptap Mark extension (addComment / removeComment / resolveComment) anchors threaded founder↔editor comments to exact spans of a draft, powering the CommentSidebar live over Supabase Realtime.
Sourced from theselvesofus, ARCHITECTURE, BUILD-JOURNEY, RUNBOOK, DEPLOYMENT, HANDOVER-CHECKLIST.
.jpg&w=3840&q=75)
Keep exploring