ShipAny Docs

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-cloudflare

That single skill drives the entire production deployment:

Auth check

Verifies wrangler whoami; only triggers a browser login if you're not authenticated yet.

Database provisioning

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.

Schema migrations

Applies drizzle migrations to the remote database (wrangler d1 migrations apply --remote, or pnpm db:migrate directly against Postgres).

RBAC seed + secrets

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.

Build + deploy

pnpm run deploy (sources .env.production, then vinext deploy). The final deploy always asks for confirmation — it's the only irreversible step.

URL fixup + admin account

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 environment

D1 vs Postgres (Hyperdrive)

D1 (default)Postgres + Hyperdrive
WhenZero external infraYou already have Postgres (Neon/Supabase/RDS) or need PG features
Bindingd1_databasesDBhyperdriveHYPERDRIVE
Schema pushwrangler d1 migrations apply --remotepnpm db:migrate directly against PG

Manual deploy notes

pnpm run deploy
  • Use pnpm run deploy, not pnpm deploy — pnpm intercepts deploy as a workspace command
  • .env.production must be sourced before vinext deploy (the wrapper script handles this) — otherwise localhost URLs from .env.local get baked into the server bundle

Deploying to Node/Docker/Vercel? That's the upstream edition — see ShipAny Next → Deploy.