Skip to content

005 — Vite SPA for the dashboard

Context

The UI is session-backed domain management (a dashboard). SSR/SSG, file-based routing, and edge middleware from full-stack frameworks add little for this surface. There is no SEO-driven marketing site inside the app. API transport is covered in ADR 004.

Decision

Ship a React + Vite SPA in apps/web, with TanStack Query for client cache, deployed as static assets via Wrangler. The API stays on the Worker (ADR 001).

Consequences

  • Clear BFF boundary (/trpc proxy in dev); no shared Next/Remix data layer.
  • Deep-linking and auth UX are client-side concerns — fine for a dashboard prototype.
  • Avoids coupling the UI deploy to a meta-framework that would blur the Worker/cron/D1 boundary.