Bun Workspace Vite Elysia SPA
Overview
Create a Bun workspace monorepo with latest generator output, not manual scaffolding. Use official generators first, then apply backend wiring and security defaults.
Required Workflow
- Confirm target path and whether existing
apps/backendorapps/frontendshould be replaced. - Run official generators only:
bun create elysia@latest apps/backendbun create vite@latest apps/frontend --template react-ts
- Install required backend dependencies and dev dependencies with Bun.
- Apply backend wiring using
references/elysia-core-backend-reference.md(copied fromelysia-core-backend) for Better Auth, Drizzle, Postgres, MCP endpoint, OpenAPI docs, CORS allowlist, CSRF middleware, and security headers. - Keep frontend as SPA (Vite React TS) unless explicitly requested otherwise.
- Wire root Bun workspace scripts using Bun filters (
bun run --filter "*" <script>). - Provide run steps and env vars required for local development.
Hard Rules
- Do not hand-roll generated app baselines when Bun is available.
- Do not keep stale/legacy package versions from old manual scaffolds.
- Do not clobber existing apps without explicit confirmation.
- Prefer replacing app folders (
apps/backend,apps/frontend) over patching old generated output when user asks for latest versions.
Backend Wiring Checklist
- Better Auth mounted and configured with Drizzle adapter.
- Drizzle schema and config present.
- Postgres connection via env
DATABASE_URL. - MCP plugin wired through
elysia-mcp(not rawMcpServerplugin use). - OpenAPI docs route enabled.
- CORS allowlist bound to frontend origin env.
- CSRF protection on non-auth cookie-based mutation routes.
- Security headers middleware enabled.
Frontend SPA Checklist
- React + TypeScript Vite template.
vitescripts present (dev,build,preview) withdevbinding host for LAN/WSL access.- Simple SPA entrypoint validated.
Run and Verify
bun install- Run all workspaces:
bun run --filter "*" dev - Run one workspace:
bun run --filter frontend devorbun run --filter backend dev - Frontend default port:
3000. Backend default port:8000. - For frontend direct run, use
bun run dev --host 0.0.0.0 --port 3000. - For backend direct run, ensure
src/index.tslistens on8000. bun run db:generateandbun run db:migratein backend when DB is configured.
References
- Read
references/workflow.mdfor exact commands, package lists, and file expectations. - For any backend work, read
references/elysia-core-backend-reference.mdfirst (copied fromelysia-core-backend). - Upstream reference implementation:
ahmed-lotfy-dev/elysia-core-backend.