Deploy
Cloudflare Workers — One Command
ShipAny vinext is Cloudflare-native — every branch builds with Vite + @cloudflare/vite-plugin and ships via vinext deploy. In Claude Code, run:
/deploy-cloudflareThat single skill drives the entire production deployment:
Verifies wrangler whoami; only triggers a browser login if you're not authenticated yet.
Creates a D1 database (default, zero external infra) and writes the binding into wrangler.jsonc — or, if you mention Postgres/Neon/Supabase, sets up Hyperdrive against your existing PostgreSQL instead.
Applies drizzle migrations to the remote database (wrangler d1 migrations apply --remote, or pnpm db:migrate directly against Postgres).
Seeds default roles/permissions on the remote DB and uploads secrets (AUTH_SECRET etc.) via wrangler secret put — secret values are never echoed to the screen.
pnpm run deploy (sources .env.production, then vinext deploy). The final deploy always asks for confirmation — it's the only irreversible step.
Bakes the real *.workers.dev (or custom domain) URL into the bundle, and on first deploy offers to create / promote a super_admin account so you can log into /admin immediately.
Idempotent by design — "ship again" simply means running /deploy-cloudflare again: every phase detects existing state (D1 exists, migrations applied, secrets uploaded, admin exists) and skips itself; only the fresh build + deploy runs.
Useful flags:
/deploy-cloudflare --domain=app.example.com # bind a custom domain
/deploy-cloudflare --admin-email=X --admin-password=Y # set up the admin account
/deploy-cloudflare --rotate-secrets # force re-upload all secrets
/deploy-cloudflare --preview # deploy to a preview environmentD1 vs Postgres (Hyperdrive)
| D1 (default) | Postgres + Hyperdrive | |
|---|---|---|
| When | Zero external infra | You already have Postgres (Neon/Supabase/RDS) or need PG features |
| Binding | d1_databases → DB | hyperdrive → HYPERDRIVE |
| Schema push | wrangler d1 migrations apply --remote | pnpm db:migrate directly against PG |
Manual deploy notes
pnpm run deploy- Use
pnpm run deploy, notpnpm deploy— pnpm interceptsdeployas a workspace command .env.productionmust be sourced beforevinext deploy(the wrapper script handles this) — otherwise localhost URLs from.env.localget baked into the server bundle
Deploying to Node/Docker/Vercel? That's the upstream edition — see ShipAny Next → Deploy.