duply

Deploy & go live.

The kit builds to a self-contained Nitro Node server, so it runs on any Node-compatible host and lights up as you set env vars.

Build

npm run build runs prebuild first (regenerates tokens.css and the SEO files), then Vite builds the server into dist/. Smoke test the production build locally before shipping:

npm run build
node dist/server/index.mjs   # serves the production build

Pre-flight

Before going public, make it yours and clean: run Make it yours to completion (three empty greps), pass the a11y-audit and perf-audit skills, then commit and push with setup-github-backup.md.

Set env vars in the host

This is the human step. Add every key your wired seams need. Two rules carry over:

  • VITE_* vars are inlined into the client bundle at build time, public, and a change requires a rebuild.
  • Server secrets stay server-side, never give them a VITE_ prefix.
  • Set VITE_SITE_URL to the deployed URL (used for auth redirects).

With no provider vars set, the deployed app simply runs in demo mode, fine for a first preview. The full seam to env map is on Wiring.

Deploy

  • Generic Node host (Render, Fly.io, Railway, a VPS): build = npm run build, start = node dist/server/index.mjs, add env vars in the dashboard.
  • Vercel / Netlify / Cloudflare: these use Nitro presets. Connect the repo, set the Vite build, add env vars, deploy.

Update redirect-sensitive providers

After you have the live URL (a dashboard step):

  • Supabase: add the deployed origin to the project's Redirect URLs / Site URL allow-list.
  • Stripe: point the webhook at https://<your-domain>/api/stripe/webhook, copy the signing secret into STRIPE_WEBHOOK_SECRET, then redeploy.

Smoke test live

Load / and /app, click through the nav, and confirm any wired seam works end to end, a real sign-in, a test Stripe checkout. The agent playbook is agent-skills/deploy.md.