---
name: vite-flare-starter
description: "Scaffold a full-stack Cloudflare app from vite-flare-starter — React 19, Hono, D1+Drizzle, better-auth, Tailwind v4+shadcn/ui, TanStack Query, R2, Workers AI. Run setup.sh to clone, configure, and deploy."
compatibility: claude-code-only
---
# Vite Flare Starter
Clone and configure Jez's 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 (Jezweb Team or Personal) | Custom domain |
### Step 2: Run Setup Script
```bash
bash skills/vite-flare-starter/scripts/setup.sh
```
The script will:
1. Clone the repo and remove `.git`
2. Find-replace `vite-flare-starter` with project name (7 locations)
3. Generate `BETTER_AUTH_SECRET`
4. Create `.dev.vars` from template
5. Optionally create Cloudflare D1 + R2 resources
6. Run `pnpm install`
7. Run local database migration
8. Report remaining manual steps
### Step 3: Manual Configuration
After the script completes:
1. **Google OAuth** (if using):
- Go to [Google Cloud Console](https://console.cloud.google.com/)
- Create OAuth 2.0 Client ID
- Add redirect URI: `http://localhost:5173/api/auth/callback/google`
- Copy Client ID and Secret to `.dev.vars`
2. **Favicon**: Replace `public/favicon.svg` with your own
3. **CLAUDE.md**: Update project description and remove vite-flare-starter references
4. **index.html**: Update `
` and meta description
### Step 4: Verify Locally
```bash
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
```bash
# 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 script 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.