FirstDevJob Docs
Technical

Deployment

How to deploy FirstDevJob

Deployment

FirstDevJob is deployed on Vercel with Convex as the backend.

Prerequisites

  • Vercel account
  • Convex account
  • Clerk account

Environment Variables

Vercel (Frontend)

NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_...
CLERK_SECRET_KEY=sk_...
NEXT_PUBLIC_CONVEX_URL=https://...convex.cloud
NEXT_PUBLIC_FEEDBACK_BOARD_URL=https://your-board.fider.io

Convex (Backend)

CLERK_JWT_ISSUER_DOMAIN=https://...clerk.accounts.dev

Deployment Steps

1. Deploy Convex

bunx convex deploy

This deploys the backend functions and schema.

2. Deploy to Vercel

Connect your GitHub repository to Vercel. On push to main:

  1. Vercel builds the Next.js app
  2. Static pages are generated
  3. App is deployed to edge network

3. Configure Domains

  • Set up custom domain in Vercel
  • Update Clerk allowed origins
  • Update Convex CORS settings if needed

CI/CD

GitHub Actions (.github/workflows/deploy.yml) run the full pipeline on push to Master:

  1. Pre-deployment tests — lint, type checking, build verification
  2. Deploy Convex functions — pushes backend code (functions, schema) to the prod Convex deployment
  3. Deploy to Vercel — builds and deploys the frontend with production environment variables

Convex must deploy before Vercel so that the frontend is always built against up-to-date backend functions.

Required GitHub Secrets

SecretPurpose
NEXT_PUBLIC_CONVEX_URLProd Convex deployment URL (inlined at build time)
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYClerk publishable key for the frontend
CONVEX_DEPLOY_KEYAuthenticates CI to push code to the prod Convex deployment
VERCEL_TOKENVercel deploy token
VERCEL_ORG_IDVercel organization ID
VERCEL_PROJECT_IDVercel project ID

You can get the CONVEX_DEPLOY_KEY from the Convex dashboard under your prod deployment's Settings.

Monitoring

  • Vercel: Frontend analytics, error tracking
  • Convex: Function logs, database metrics
  • Clerk: Auth events, user sessions

On this page