Vercel + Neon Demo
SeqDesk’s public demo can run fully on Vercel when the app uses PostgreSQL via Neon. The landing page and the demo app are separate Vercel projects:
seqdesk.orgserves the marketing/docs site.demo.seqdesk.orgserves the SeqDesk app.
1. Create The Neon Database
Create a Neon project and copy:
- The pooled connection string for
DATABASE_URL - The direct connection string for
DIRECT_URL
Both should point at the same database and schema.
2. Configure The Demo Project In Vercel
Import the hzi-bifo/SeqDesk repository and set these environment variables:
DATABASE_URL=postgresql://...
DIRECT_URL=postgresql://...
NEXTAUTH_URL=https://demo.seqdesk.org
NEXTAUTH_SECRET=replace-with-a-random-secret
SEQDESK_ENABLE_PUBLIC_DEMO=true
NEXT_PUBLIC_SEQDESK_ENABLE_PUBLIC_DEMO=true
CRON_SECRET=replace-with-a-random-secretNotes:
DATABASE_URLis the runtime connection string used by the app.DIRECT_URLis used for Prisma migrations during build and deploy.CRON_SECRETprotects the Vercel cron endpoint used by/api/demo/cleanup.NEXTAUTH_SECRETandCRON_SECRETshould be generated independently.
3. Set The Vercel Build Command
SeqDesk runs Prisma client generation during the build script automatically, but the demo deployment should also apply migrations before the Next.js build. Set the project build command in Vercel to:
npm run db:migrate:deploy && npm run buildThis uses DIRECT_URL for prisma migrate deploy and then runs the normal app
build.
4. Assign The Demo Domain
Attach demo.seqdesk.org to the demo project in Vercel and create the DNS
record requested by Vercel, usually:
Type: CNAME
Name: demo
Value: cname.vercel-dns.comUse the exact target Vercel shows for your project if it differs.
5. Point The Landing Page At The Demo
In the SeqDesk.com Vercel project, set:
NEXT_PUBLIC_SEQDESK_DEMO_URL=https://demo.seqdesk.org
NEXT_PUBLIC_SITE_URL=https://seqdesk.orgRedeploy the landing page after updating these values.
Preview Deployments
Keep previews simple:
- Reuse one shared non-production Neon database.
- Set both
DATABASE_URLandDIRECT_URLin the Preview environment. - Avoid per-preview branching until you need isolated data.
Troubleshooting
This is a serverless deployment, so seqdesk doctor cannot inspect a persistent
install directory or PM2 process. Start with the failed deployment’s Build
Logs, then use Vercel Runtime Logs for requests made after deployment.
Look above a final generic npm ... exited with 1 message for the first
actionable error. Vercel’s
build troubleshooting guide
shows where those logs and resource reports appear.
The build fails during Prisma migration
Confirm all of the following in the Vercel environment used by that deployment:
DATABASE_URLis Neon’s pooled runtime URL; its hostname normally contains-pooler.DIRECT_URLis the direct, non-pooled URL and points at the same Neon database and schema.- Both URLs include Neon’s required SSL parameters and use the current password.
- The build command is exactly
npm run db:migrate:deploy && npm run build.
Do not paste either full URL into logs or issue reports. If you add or correct a Vercel environment variable, redeploy: changes do not alter deployments that already exist. See Neon’s connection-pooling guide and Vercel’s environment-variable scopes for the provider-specific behavior.
The deployment opens but setup or sign-in fails
Check the application response and then the matching Vercel Runtime Logs:
curl -fsS https://demo.seqdesk.org/api/setup/statusNEXTAUTH_URL must exactly match the browser origin, including https:// and
the production hostname. NEXTAUTH_SECRET must be present in the same Vercel
environment as the deployment. After changing either value, create a new
deployment rather than retrying the old one.
If setup reports a database problem, verify both Neon URLs and check that the
Neon project is available. A successful build migration does not prove the
pooled runtime URL is correct; a running page does not prove DIRECT_URL can
perform the next migration.
The custom domain does not open
First open the generated *.vercel.app deployment URL. If that works, confirm
demo.seqdesk.org is attached to the demo project—not the landing-page
project—and that DNS uses the exact record Vercel currently displays. Check the
domain status in Vercel before changing application settings.
A preview uses the wrong data
Vercel Production and Preview variables are scoped separately. Confirm the
preview branch received the intended non-production DATABASE_URL and
DIRECT_URL; never point preview deployments at the production demo database.
If previews should share data, use one explicitly named non-production Neon
database and treat all preview branches as having access to it.
Demo cleanup returns 401 or stops running
Confirm CRON_SECRET is set for the affected Vercel environment, redeploy after
changing it, and inspect the /api/demo/cleanup cron invocation in Runtime
Logs. Do not expose the cleanup endpoint without its bearer secret and do not
reuse NEXTAUTH_SECRET as CRON_SECRET.
Existing SQLite Installs
SQLite is no longer supported by current SeqDesk releases. Existing SQLite instances must stay on the last SQLite-compatible release until they are migrated manually to PostgreSQL.