Prerequisites
- A Convex account
- The Convex CLI installed globally:
Deploy
Create a Convex project
Log in to the Convex dashboard and create a new project. Once created, note your deployment name — it looks like
tremendous-jaguar-953. Your project URLs will be:- Client URL:
https://<deployment-name>.convex.cloud - HTTP/actions URL:
https://<deployment-name>.convex.site
Set VITE_CONVEX_URL in your local environment
Copy the example env file and set your production Convex URL:Then edit
.env.local:Configure environment variables in the Convex dashboard
In your Convex project’s Settings → Environment Variables, add the following:
| Variable | Description |
|---|---|
JWT_PRIVATE_KEY | Private key for Convex Auth JWT signing |
OPEN_ROUTER_KEY | API key for OpenRouter (AI model routing) |
FAL_KEY | API key for fal.ai (image generation) |
INGEST_API_KEY | Shared secret for the Discord ingest HTTP endpoint |
NEXTCLOUD_WEBDAV_BASE_URL | WebDAV base URL for your Nextcloud instance |
NEXTCLOUD_WEBDAV_USER | Nextcloud username |
NEXTCLOUD_WEBDAV_APP_PASSWORD | Nextcloud app password |
NEXTCLOUD_UPLOAD_PREFIX | Upload path prefix (default: pindeck/media-uploads) |
AUTH_GOOGLE_ID | Google OAuth client ID |
AUTH_GOOGLE_SECRET | Google OAuth client secret |
AUTH_GITHUB_ID | GitHub OAuth client ID |
AUTH_GITHUB_SECRET | GitHub OAuth client secret |
SITE_URL | Public URL of your deployed frontend (no trailing slash) |
Verifying the deployment
After deploying, confirm your local environment is correctly targeting production:VITE_CONVEX_URL, VITE_CONVEX_SITE_URL, and CONVEX_DEPLOYMENT are all set correctly in .env.local.