Vite 8 + React 19 SPA for Lux AI chat. Served by ghcr.io/hanzoai/spa.
- Vite 8, React 19, TypeScript 5.7
@ai-sdk/react— client-side streaming viauseChat- wouter — client-side routing
- Tailwind CSS — styling
- shadcn/ui primitives (trimmed: button, markdown, separator)
pnpm install
cp .env.local.example .env.local
pnpm devVisit http://localhost:3000.
pnpm build # emits dist/
docker build -t lux-chat .See .env.local.example. All variables are client-exposed (VITE_ prefix).
The SPA is a pure frontend. It calls:
POST $VITE_CHAT_API_URL— AI SDK v4 data stream- REST endpoints under
$VITE_API_BASEfor chat persistence + billing - OIDC against
lux.id/hanzo.idfor auth
See LLM.md for the full backend contract.