Wahala Portal
Client services CRM & portal — Phase 0 skeleton.
Stack: Next.js (App Router) on Cloudflare Workers via OpenNext, with D1 (Drizzle) + KV (sessions) + R2 (files) + Cloudflare Email (magic-link login) + Stripe. No external identity provider. Next: the magic-link auth flow and the Phase 1 loop — see docs/PLAN.md and phase-0.md.