Tracking issue for sub-phase 1.c of RFC-001.
Bootstrap the waveflow-web repository: TanStack Start scaffolding + Better Auth magic-link login + empty post-login dashboard + JWKS endpoint.
Scope
- New repo
waveflow-web, TS monorepo from day one (will host @waveflow/design-tokens, @waveflow/locales, @waveflow/api-types later).
- TanStack Start (file-based routing, SSR by default).
- Tailwind v4 +
@theme inline block consuming the 14-theme tokens from @waveflow/design-tokens (initially copy-pasted from desktop's src/lib/themes.ts; extracted as proper package later).
- Better Auth installed with the email/magic-link provider.
- Routes:
/ — landing (logged out)
/login — magic-link form
/auth/callback — magic-link verify
/dashboard — empty placeholder, requires session
- Better Auth issues RS256 JWTs (exp = 1h) + refresh tokens (90 days).
- JWKS endpoint live at
/.well-known/jwks.json with the public key.
- Server URL config: env var
WAVEFLOW_SERVER_URL, defaults to http://localhost:8080.
Dependencies
- Independent of 1.b — can be built in parallel. The two only meet in 1.d.
Acceptance criteria
Estimate
~3 weeks.
Tracking issue for sub-phase 1.c of RFC-001.
Bootstrap the
waveflow-webrepository: TanStack Start scaffolding + Better Auth magic-link login + empty post-login dashboard + JWKS endpoint.Scope
waveflow-web, TS monorepo from day one (will host@waveflow/design-tokens,@waveflow/locales,@waveflow/api-typeslater).@theme inlineblock consuming the 14-theme tokens from@waveflow/design-tokens(initially copy-pasted from desktop's src/lib/themes.ts; extracted as proper package later)./— landing (logged out)/login— magic-link form/auth/callback— magic-link verify/dashboard— empty placeholder, requires session/.well-known/jwks.jsonwith the public key.WAVEFLOW_SERVER_URL, defaults tohttp://localhost:8080.Dependencies
Acceptance criteria
bun run devserves the web onhttp://localhost:3000, SSR working./dashboardwith active session.curl http://localhost:3000/.well-known/jwks.jsonreturns a valid JWKS.sub,email,exp,iat.Estimate
~3 weeks.