
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.
Architecture
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.
3
role-isolated dashboards
~24
tables (RLS)
<2 min
newsletter send
60s
publish→public (ISR)
Stack
AI
Three Anthropic Claude assistants (Sonnet 4.6) — Mirror AI (writing reflection), Librarian AI (reader guide), Editor’s Eye (editorial) — all sharing a HUMAN_VOICE prompt and constrained so they can never produce publishable copy.
Data model
~24 tables · RLS + policies · 7 enums
Key decisions
The hard parts, solved
A service client forwarding cookies ran under RLS and silently dropped writes — root-caused and fixed with a cookieless admin client; is_admin() and my_role() search_path were also hardened.
Regenerating database types from the live schema and de-casting surfaced and fixed 5 latent bugs (a PayFast amount string going into a numeric column, null .replace/.join, unknown into a Json column).
Ten operational procedures (password reset, unpublish, soft-delete/restore, newsletter + Facebook failure, RLS diagnosis, Vercel rollback) plus a plain-language client handover checklist.
Sourced from theselvesofus — ARCHITECTURE, BUILD-JOURNEY, RUNBOOK, DEPLOYMENT, HANDOVER-CHECKLIST.
.jpg&w=3840&q=75)