- Vite Flare Starter
- Clone and configure the batteries-included Cloudflare starter into a standalone project. Produces a fully rebranded, deployable full-stack app.
- What You Get
- Layer
- Technology
- Frontend
- React 19, Vite, Tailwind v4, shadcn/ui
- Backend
- Hono (on Cloudflare Workers)
- Database
- D1 (SQLite at edge) + Drizzle ORM
- Auth
- better-auth (Google OAuth + optional email/password)
- Storage
- R2 (S3-compatible object storage)
- AI
- Workers AI binding
- Data Fetching
- TanStack Query
- Deployment
- Cloudflare Workers with Static Assets
- See
- references/tech-stack.md
- for the full dependency list.
- Workflow
- Step 1: Gather Project Info
- Ask for:
- Required
- Optional
- Project name (kebab-case)
- Admin email
- Description (1 sentence)
- Google OAuth credentials
- Cloudflare account
- Custom domain
- Step 2: Clone and Configure
- Perform these operations to scaffold the project. See
- references/setup-pattern.md
- for exact replacement targets and the
- .dev.vars
- template.
- Clone
- the repo and remove
- .git
- , init fresh repo
- Find-replace
- vite-flare-starter
- with the project name in wrangler.jsonc (worker name, database name, R2 bucket names), package.json (name, database refs), and index.html (title, meta)
- Remove
- hardcoded
- account_id
- and replace
- database_id
- with placeholder in wrangler.jsonc
- Reset
- package.json version to
- 0.1.0
- Generate
- BETTER_AUTH_SECRET
- using
- openssl rand -hex 32
- (or Python
- secrets.token_hex(32)
- )
- Create
- .dev.vars
- from template (convert kebab-case name to Title Case for display, underscore for ID)
- Optionally create
- Cloudflare D1 database and R2 buckets, update wrangler.jsonc with database_id
- Install
- dependencies with
- pnpm install
- Run
- local database migration with
- pnpm run db:migrate:local
- Initial commit
- Step 3: Manual Configuration
- After the script completes:
- Google OAuth
- (if using):
- Go to
- Google Cloud Console
- Create OAuth 2.0 Client ID
- Add redirect URI:
- http://localhost:5173/api/auth/callback/google
- Copy Client ID and Secret to
- .dev.vars
- Favicon
-
- Replace
- public/favicon.svg
- with your own
- CLAUDE.md
-
- Update project description and remove vite-flare-starter references
- index.html
- Update
and meta description Step 4: Verify Locally pnpm dev Check: http://localhost:5173 loads Shows YOUR app name, not "Vite Flare Starter" Sign-up/sign-in works (if Google OAuth configured) Step 5: Deploy to Production
Set production secrets
openssl rand -base64 32 | npx wrangler secret put BETTER_AUTH_SECRET echo "https://PROJECT_NAME.SUBDOMAIN.workers.dev" | npx wrangler secret put BETTER_AUTH_URL echo "http://localhost:5173,https://PROJECT_NAME.SUBDOMAIN.workers.dev" | npx wrangler secret put TRUSTED_ORIGINS
If using Google OAuth
echo "your-client-id" | npx wrangler secret put GOOGLE_CLIENT_ID echo "your-client-secret" | npx wrangler secret put GOOGLE_CLIENT_SECRET
Migrate remote database
pnpm run db:migrate:remote
Build and deploy
- pnpm
- run build
- &&
- pnpm
- run deploy
- Critical
- After first deploy, update BETTER_AUTH_URL with your actual Worker URL. Also add the production URL to Google OAuth redirect URIs. Common Issues Symptom Cause Fix Auth silently fails (redirect to homepage) Missing TRUSTED_ORIGINS Set TRUSTED_ORIGINS secret with all valid URLs "Not authorized" on deploy Wrong account_id Remove account_id from wrangler.jsonc or set yours Database operations fail Using original database_id Create YOUR database, use YOUR database_id localStorage shows "vite-flare-starter" Missing VITE_APP_ID Set VITE_APP_ID=yourapp in .dev.vars Auth fails in production BETTER_AUTH_URL mismatch Must match actual Worker URL exactly What Gets Rebranded The setup process handles these automatically: File What Changes wrangler.jsonc Worker name, database name, bucket names package.json Package name, database references in scripts .dev.vars App name, secret, URL index.html Title, meta tags These need manual attention: CLAUDE.md — project description public/favicon.svg — your favicon Google OAuth — redirect URIs Production secrets — via wrangler secret put See references/customization-guide.md for the complete rebranding checklist.