You built a Next.js app — probably with Claude Code or Cursor. It works on localhost:3000. You want your team to access it at a real URL, but only employees with @yourcompany.com email.
Vercel is the obvious choice for Next.js, but company email gating on Vercel costs ~$320/month as an enterprise feature. Here's the 30-second alternative.
Prerequisites
- A working Next.js project
- Node.js installed
- A Workshop account (free)
For Next.js static export apps
If your Next.js app uses output: "export" in next.config.js, Workshop deploys the static output:
npm install -g @getworkshop/cli
workshop login
cd your-nextjs-project
workshop init # detects Next.js automatically
workshop deploy
Workshop runs next build, takes the out/ directory, and deploys it to Cloudflare's edge network globally.
For Next.js server-side apps (API routes, SSR)
If your app uses API routes, server components, or server-side rendering, use the Node runtime:
workshop init
# When asked for runtime: select "Node"
# Entry command: node .next/standalone/server.js
Or, the simpler path for most vibe-coded apps: use next export mode and keep your API calls client-side or move them to serverless functions.
Access control
During workshop init, choose Company domain for access mode. Your app will only load for users who authenticate with @yourcompany.com email. No code changes to your Next.js app required — authentication is handled at the infrastructure layer.
Environment variables
workshop secret set NEXT_PUBLIC_API_URL=https://...
workshop secret set DATABASE_URL=postgresql://...
These are injected at runtime. Don't put secrets in .env.local files — those get bundled into the deployment.
Redeploying
workshop deploy
That's it. Every subsequent deploy is the same one command. Workshop detects your config from workshop.config.json and redeploys in ~30 seconds.
Pricing
Free for one Next.js app. $19/month for five. Compare: Vercel Pro + Advanced Security is $170+/month for one app with company email gating.