Vercel
Deploying and running DirectoryKit on Vercel.
Vercel is the recommended host — made by the same team that builds Next.js, and the free tier is plenty for launching a directory.
For the fastest path, follow Deploy in 5 Minutes. This page covers the details.
Build settings (already configured)
vercel.json in the repo sets everything Vercel needs:
{
"version": 2,
"buildCommand": "pnpm build",
"outputDirectory": ".next",
"installCommand": "pnpm install",
"framework": "nextjs"
}You shouldn't need to change these. If Vercel imports the repo and asks for overrides, click Cancel and accept defaults — the file wins.
The project uses webpack because next.config.ts has custom config that Turbopack doesn't yet support. The pnpm build script already includes --webpack.
Import the project

Go to vercel.com/new → pick your repo → Deploy.
Environment variables
Paste everything from your local .env.local into Vercel → Settings → Environment Variables before clicking Deploy. Missing vars usually cause the first build to succeed but runtime to error.

Full list: Environment Variables.
Cron jobs
Two cron schedules are defined in vercel.json:
"crons": [
{ "path": "/api/cron/competitions", "schedule": "15 8 * * *" },
{ "path": "/api/cron/winner-reminders", "schedule": "0 9 * * *" }
]Vercel wires these automatically on deploy. Each endpoint checks Authorization: Bearer ${CRON_SECRET} — so make sure CRON_SECRET is set in env vars, or cron returns 401.

See Cron Jobs for what each one does.
Vercel Hobby allows one cron job that runs up to once per day. The Pro plan lifts those limits. If you're on Hobby, keep just one cron entry or upgrade.
Runtime settings
| Setting | Value |
|---|---|
| Build command | pnpm build (from vercel.json) |
| Node version | 18+ (auto) |
| Heap size | 4GB — already set via NODE_OPTIONS='--max-old-space-size=4096' in package.json scripts |
Deploy succeeded — what next?
- Update
NEXT_PUBLIC_APP_URLto your*.vercel.appURL → redeploy - Update the Stripe webhook URL to point at production → copy the new signing secret
- Update Supabase Auth → Redirect URLs to include
https://your-domain.vercel.app/auth/callback
Custom domain
See Domain Setup.
When builds fail
Most common causes:
- Missing env var — check the build log for "is not defined"
- pnpm-lock.yaml out of date — bump a dep locally, commit the updated lockfile
- Schema mismatch — if you regenerated types against an old schema
See Troubleshooting for more.