A stranger must sign up / log in before seeing anything; an account owns projects; each project's Settings carries the script tag + DSN. The DynamoDB model (USER# + EMAIL# GSI, sessions, memberships, ownerId, plans) already exists — this epic is the missing flow + enforcement.
Tracks (4):
- #113 — Auth pages: signup + forgot/reset views, cross-linked with login
- #114 — default-on auth enforcement + close the /api/sites open fallback
- #115 — SPA session gate + signed-in identity in the header
- #116 — session cookies across the dev origin split (credentials + CORS)
Done when: bun run dev + bun run dev:server from a clean table → /dashboard redirects to /login → sign up → empty project hub → create project → Settings shows script tag + DSN.