Skip to Content
InstallationVercel + Neon Demo

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.org serves the marketing/docs site.
  • demo.seqdesk.org serves 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-secret

Notes:

  • DATABASE_URL is the runtime connection string used by the app.
  • DIRECT_URL is used for Prisma migrations during build and deploy.
  • CRON_SECRET protects the Vercel cron endpoint used by /api/demo/cleanup.
  • NEXTAUTH_SECRET and CRON_SECRET should 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 build

This 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.com

Use 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.org

Redeploy the landing page after updating these values.

Preview Deployments

Keep previews simple:

  • Reuse one shared non-production Neon database.
  • Set both DATABASE_URL and DIRECT_URL in 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_URL is Neon’s pooled runtime URL; its hostname normally contains -pooler.
  • DIRECT_URL is 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/status

NEXTAUTH_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.