Vite Flare Starter

作者 jezweb64965d9d9fc7無授權條款1K 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫3 天前更新

Scaffold a full-stack Cloudflare app from the vite-flare-starter template — React 19 + Hono + D1+Drizzle + better-auth + Tailwind v4+shadcn/ui + TanStack Query + R2 + Workers AI. Run setup.sh to clone, configure, and deploy. Use whenever the user wants a batteries-included Cloudflare full-stack app, vite-flare-starter scaffold, or a React + Cloudflare app with auth + database + Workers AI ready to go.

AI 產生的概覽

以 vite-flare-starter 範本建立全端 Cloudflare 應用,完成複製、改名、設定與部署。

功能
此技能引導代理複製 vite-flare-starter 儲存庫,並將其改造成獨立專案。內容涵蓋重新命名 Worker、資料庫與 R2 儲存桶,產生驗證密鑰,撰寫 .dev.vars 檔案,安裝相依套件,執行 Drizzle 遷移,以及部署到 Cloudflare。此外也列出環境變數、常見客製方式、疑難排解步驟與正式環境檢查清單。
適用情境
當使用者想要一個開箱即用、以 vite-flare-starter 為基礎的 Cloudflare 全端應用,或一個已接好驗證、資料庫與 Workers AI 的 React + Cloudflare 專案時使用。它適合全新專案建置與首次部署,而非後續功能開發。
執行需求
需要 git、pnpm、Node、npx wrangler,以及用於產生密鑰的 openssl 或 python3,還需要一個擁有 D1 與 R2 資源的 Cloudflare 帳號。Google OAuth 憑證與郵件服務 API 金鑰為選用項目。複製儲存庫與部署需要網路存取。此技能僅附帶兩個範本資源檔案,不含指令碼,指令由代理執行。

Vite Flare Starter

Clone and configure the batteries-included Cloudflare starter into a standalone project. Produces a fully rebranded, deployable full-stack app.

Stack

LayerTechnologyVersion
FrontendReact, Vite, Tailwind CSS, shadcn/ui19, 6.x, v4, latest
BackendHono (on Cloudflare Workers)4.x
DatabaseD1 (SQLite at edge) + Drizzle ORM0.38+
Authbetter-auth (Google OAuth + email/password)latest
StorageR2 (S3-compatible object storage)—
AIWorkers AI binding—
Data FetchingTanStack Queryv5

Cloudflare Bindings

BindingTypePurpose
DBD1 DatabasePrimary application database
AVATARSR2 BucketUser avatar storage
FILESR2 BucketGeneral file uploads
AIWorkers AIAI model inference

Project Structure

src/├── client/                 # React frontend│   ├── components/         # UI components│   ├── hooks/              # Custom hooks + TanStack Query│   ├── pages/              # Route pages│   ├── lib/                # Utilities (auth client, etc.)│   └── main.tsx            # App entry point├── server/                 # Hono backend│   ├── index.ts            # Worker entry point│   ├── routes/             # API routes│   ├── middleware/          # Auth, CORS, etc.│   └── db/                 # Drizzle schema + queries└── shared/                 # Shared types between client/server

Key Commands

CommandPurpose
pnpm devStart local dev server
pnpm buildProduction build
pnpm deployDeploy to Cloudflare
pnpm db:migrate:localApply migrations locally
pnpm db:migrate:remoteApply migrations to production
pnpm db:generateGenerate migration from schema changes

Workflow

Step 1: Gather Project Info

Ask for:

RequiredOptional
Project name (kebab-case)Admin email
Description (1 sentence)Google OAuth credentials
Cloudflare accountCustom domain

Step 2: Clone and Configure

2a. Clone and clean
bash
git clone https://github.com/jezweb/vite-flare-starter.git PROJECT_DIR --depth 1cd PROJECT_DIRrm -rf .gitgit init
2b. Find-replace targets

Replace vite-flare-starter with the project name in these locations:

FileTargetReplace with
wrangler.jsonc"vite-flare-starter" (worker name)"PROJECT_NAME"
wrangler.jsoncvite-flare-starter-dbPROJECT_NAME-db
wrangler.jsoncvite-flare-starter-avatarsPROJECT_NAME-avatars
wrangler.jsoncvite-flare-starter-filesPROJECT_NAME-files
package.json"name": "vite-flare-starter""name": "PROJECT_NAME"
package.jsonvite-flare-starter-dbPROJECT_NAME-db
index.html<title> contentApp display name (Title Case)

Also in wrangler.jsonc:

  • Remove hardcoded account_id line (let wrangler prompt or use env var)
  • Replace database_id value with REPLACE_WITH_YOUR_DATABASE_ID

Reset package.json version to "0.1.0".

Use the Edit tool for replacements (preferred over sed to avoid macOS/GNU differences).

2c. Generate auth secret
bash
BETTER_AUTH_SECRET=$(openssl rand -hex 32 2>/dev/null || python3 -c "import secrets; print(secrets.token_hex(32))")
2d. Create .dev.vars

Convert kebab-case project name: my-cool-app becomes Display My Cool App, ID my_cool_app.

# Local Development Environment Variables# DO NOT COMMIT THIS FILE TO GIT
# Authentication (better-auth)BETTER_AUTH_SECRET=<generated>BETTER_AUTH_URL=http://localhost:5173
# Google OAuth (optional)GOOGLE_CLIENT_ID=GOOGLE_CLIENT_SECRET=
# Email Auth Control (disabled by default)# ENABLE_EMAIL_LOGIN=true# ENABLE_EMAIL_SIGNUP=true
# Application ConfigurationAPP_NAME=<Display Name>VITE_APP_NAME=<Display Name>VITE_APP_ID=<app_id>VITE_TOKEN_PREFIX=<app_id>_VITE_GITHUB_URL=VITE_FOOTER_TEXT=
NODE_ENV=development
2e. Create Cloudflare resources (optional)
bash
npx wrangler d1 create PROJECT_NAME-db# Extract database_id from output, update wrangler.jsonc
npx wrangler r2 bucket create PROJECT_NAME-avatarsnpx wrangler r2 bucket create PROJECT_NAME-files
2f. Install and migrate
bash
pnpm installpnpm run db:migrate:local
2g. Initial commit
bash
git add -Agit commit -m "Initial commit from vite-flare-starter"

Step 3: Manual Configuration

  1. 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
  2. Favicon: Replace public/favicon.svg
  3. CLAUDE.md: Update project description, remove vite-flare-starter references
  4. index.html: Update <title> and meta description

Step 4: Verify Locally

bash
pnpm dev

Check: http://localhost:5173 loads, shows YOUR app name, sign-up/sign-in works (if OAuth configured).

Step 5: Deploy to Production

bash
# Set production secretsopenssl rand -base64 32 | npx wrangler secret put BETTER_AUTH_SECRETecho "https://PROJECT_NAME.SUBDOMAIN.workers.dev" | npx wrangler secret put BETTER_AUTH_URLecho "http://localhost:5173,https://PROJECT_NAME.SUBDOMAIN.workers.dev" | npx wrangler secret put TRUSTED_ORIGINS
# If using Google OAuthecho "your-client-id" | npx wrangler secret put GOOGLE_CLIENT_IDecho "your-client-secret" | npx wrangler secret put GOOGLE_CLIENT_SECRET
# Migrate remote databasepnpm run db:migrate:remote
# Build and deploypnpm run build && pnpm run deploy

Critical: After first deploy, update BETTER_AUTH_URL with your actual Worker URL. Add the production URL to Google OAuth redirect URIs.

Security Fingerprints

Change all of these so attackers cannot identify your site uses this starter:

LocationDefault ValueHow to Change
Page title"Vite Flare Starter"index.html
App name in UI"Vite Flare Starter"VITE_APP_NAME env var
localStorage keysvite-flare-starter-themeVITE_APP_ID env var
API tokensvfs_ prefixVITE_TOKEN_PREFIX env var
GitHub linksstarter repoVITE_GITHUB_URL (set empty to hide)
Worker namevite-flare-starterwrangler.jsonc
Database namevite-flare-starter-dbwrangler.jsonc
R2 bucketsvite-flare-starter-*wrangler.jsonc

Environment Variables

Branding (VITE_ prefix = available in frontend)

VariablePurposeExample
VITE_APP_NAMEDisplay name in UI"My Cool App"
VITE_APP_IDlocalStorage prefix, Sentry"mycoolapp"
VITE_TOKEN_PREFIXAPI token prefix"mca_"
VITE_GITHUB_URLGitHub link (empty = hidden)""
VITE_FOOTER_TEXTFooter copyright text"2026 My Company"
APP_NAMEServer-side app name"My Cool App"

Auth

VariablePurposeNotes
BETTER_AUTH_SECRETSession encryptionopenssl rand -hex 32
BETTER_AUTH_URLAuth base URLMust match actual URL exactly
TRUSTED_ORIGINSAllowed originsComma-separated, include localhost + prod
GOOGLE_CLIENT_IDGoogle OAuthFrom Google Cloud Console
GOOGLE_CLIENT_SECRETGoogle OAuthFrom Google Cloud Console
ENABLE_EMAIL_LOGINEnable email/password"true" to enable
ENABLE_EMAIL_SIGNUPEnable email signupRequires ENABLE_EMAIL_LOGIN

Email (Optional)

VariablePurposeNotes
EMAIL_FROMSender addressFor verification/password reset
EMAIL_API_KEYEmail service API keyResend recommended

Common Customisations

Adding a New Database Table

  1. Add schema in src/server/db/schema.ts
  2. Generate migration: pnpm db:generate
  3. Apply locally: pnpm db:migrate:local
  4. Apply to production: pnpm db:migrate:remote

Adding a New API Route

  1. Create route file in src/server/routes/
  2. Register in src/server/index.ts
  3. Add TanStack Query hook in src/client/hooks/

Changing Auth Providers

Edit src/server/auth.ts: add provider to socialProviders, add credentials to .dev.vars and production secrets, update client-side login buttons.

Feature Flags

Control features via environment variables: VITE_FEATURE_STYLE_GUIDE=true, VITE_FEATURE_COMPONENTS=true. Add your own in src/client/lib/features.ts.

Troubleshooting

SymptomCauseFix
Auth redirects to homepage silentlyMissing TRUSTED_ORIGINSSet TRUSTED_ORIGINS with all valid URLs
"Not authorized" on deployWrong account_idRemove account_id from wrangler.jsonc or set yours
Database 500 errorsMissing migrationsRun pnpm db:migrate:local and pnpm db:migrate:remote
localStorage shows "vite-flare-starter"Missing VITE_APP_IDSet VITE_APP_ID=yourapp in .dev.vars
Auth fails in production onlyBETTER_AUTH_URL mismatchMust match actual Worker URL exactly (https, no trailing slash)
"redirect_uri_mismatch" on Google sign-inOAuth redirect URI missingAdd production URL to Google Cloud Console OAuth redirect URIs
Secret changes have no effectNot redeployedwrangler secret put does NOT redeploy. Run pnpm deploy after

Production Deployment Checklist

  • BETTER_AUTH_SECRET set (different from dev!)
  • BETTER_AUTH_URL matches actual Worker URL
  • TRUSTED_ORIGINS includes all valid URLs
  • Google OAuth redirect URI includes production URL
  • Remote database migrated (pnpm db:migrate:remote)
  • No vite-flare-starter references in config files
  • Favicon replaced
  • CLAUDE.md updated
  • .dev.vars is NOT committed (check .gitignore)

來源與署名

來源:jezweb/claude-skills位於plugins/cloudflare/skills/vite-flare-starter提交64965d9

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架