Running against LocalStack. Surfaces are exposed under path prefixes here; in production they're separate subdomains.
/auth/auth/login — redirects to Cognito (won't resolve locally without a real Cognito or Google client)/api/v1/*Most endpoints require a caller identity. In local dev with SPIN_DEV_MODE=1, pass X-Spin-Dev-Email: dev@axelerant.com. JSON endpoints — view in browser dev tools or curl.
GET /api/v1/projects — list projectsGET /api/v1/groups — list groupsGET /api/v1/markdown — list markdown filesPOST /api/v1/markdown/preview — render markdown to HTMLPOST /_/cron/lifecycle — scheduled cleanupPOST /_/cron/cost-report — weekly Slack post (LocalStack lacks Cost Explorer, will fail)