1// Second Draft.md
2// ---------------------------
3
4# Second Draft
5
6Private writing club platform for anonymous essays, structured critiques, and per-essay discussion — real accounts, invisible identities.
7
8**TYPE:** Web Application
9**STATUS:** Live
10**LIVE:** https://second-draft-swart.vercel.app
11**DEV:** http://localhost:4100
12**WORKSPACE:** ~/GitHub/writing
13**GITHUB:** nikanjuri/second-draft (private)
14
15---
16
17## FEATURES
18
19- Anonymous essay publishing — member pages never expose names, emails, or user IDs
20- Invite-code signup with admin approval for pending members
21- Structured critique workflow per essay
22- Per-essay discussion threads
23- Real authenticated accounts behind the anonymity layer
24- Private object storage for essay content
25- Guardrail tests enforcing the anonymity model
26
27---
28
29## TECHNOLOGIES
30
31- Next.js 15 (App Router)
32- TypeScript
33- Supabase (Auth, Postgres, private storage)
34- Vitest
35- Playwright
36
37---
38
39## NOTES
40
41Second Draft is a platform for a private writing club: members publish essays anonymously, give structured critiques, and discuss each piece — without knowing who wrote what.
42
43### The anonymity model
44
45Members use real authenticated accounts, but member-facing pages never expose names, emails, or raw user IDs. New signups without the club invite code stay pending until an admin approves them — that invariant is enforced in code and covered by focused Vitest guardrail tests, so a refactor can't quietly leak identity.
46
47### Why anonymity
48
49Honest critique requires separating the work from the person. When you don't know whose essay you're reading, feedback gets sharper and egos stay out of the room — the club reads the writing, not the writer.
50
51### Stack
52
53Next.js App Router on Supabase — auth for real accounts, Postgres for essays and critiques, and private object storage so drafts are never publicly addressable.