EasyStarter logoEasyStarter

Deployment

Deploy to Cloudflare Workers and Pages

Overview

EasyStarter is optimized for deployment on Cloudflare:

  • Web: Cloudflare Pages
  • Server: Cloudflare Workers

Prerequisites

  1. Cloudflare account
  2. Wrangler CLI configured
  3. D1 database created

Quick Deploy

# Deploy both web and server
pnpm run deploy

# Deploy individually
pnpm deploy:web
pnpm deploy:server

First Deployment

1. Initial Deploy

pnpm run deploy

This will output your production URLs:

  • Web: https://your-app.pages.dev
  • Server: https://your-api.workers.dev

2. Update Configuration

Server (apps/server/wrangler.jsonc):

{
	"vars": {
		"WEBSITE_URL": "https://your-app.pages.dev",
		"SERVER_URL": "https://your-api.workers.dev",
	},
}

Web (apps/web/.env.production):

VITE_SERVER_URL=https://your-api.workers.dev
VITE_APP_URL=https://your-app.pages.dev

3. Redeploy

pnpm run deploy

Environment Variables

Server Secrets

Set secrets using Wrangler:

cd apps/server

# Authentication
npx wrangler secret put AUTH_SECRET

# OAuth
npx wrangler secret put GITHUB_CLIENT_ID
npx wrangler secret put GITHUB_CLIENT_SECRET
npx wrangler secret put GOOGLE_CLIENT_ID
npx wrangler secret put GOOGLE_CLIENT_SECRET

# Email
npx wrangler secret put RESEND_API_KEY

Database Migration

Run migrations on production D1:

cd apps/server
pnpm db:migrate --remote

Custom Domain

  1. Go to Cloudflare Dashboard → Pages → your project
  2. Navigate to "Custom domains"
  3. Add your domain
  4. Update DNS records as instructed

Troubleshooting

IssueSolution
CORS errorsCheck WEBSITE_URL in server config
Auth not workingVerify AUTH_SECRET is set
Database errorsRun db:migrate --remote

On this page