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.ioConvex (Backend)
CLERK_JWT_ISSUER_DOMAIN=https://...clerk.accounts.devDeployment Steps
1. Deploy Convex
bunx convex deployThis deploys the backend functions and schema.
2. Deploy to Vercel
Connect your GitHub repository to Vercel. On push to main:
- Vercel builds the Next.js app
- Static pages are generated
- 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:
- Pre-deployment tests — lint, type checking, build verification
- Deploy Convex functions — pushes backend code (functions, schema) to the prod Convex deployment
- 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
| Secret | Purpose |
|---|---|
NEXT_PUBLIC_CONVEX_URL | Prod Convex deployment URL (inlined at build time) |
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY | Clerk publishable key for the frontend |
CONVEX_DEPLOY_KEY | Authenticates CI to push code to the prod Convex deployment |
VERCEL_TOKEN | Vercel deploy token |
VERCEL_ORG_ID | Vercel organization ID |
VERCEL_PROJECT_ID | Vercel 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