Local Development
Set up the Pindeck development environment on your machine.
Prerequisites
- Bun runtime
- Access to the self-hosted Pindeck Convex deployment
- Google or GitHub OAuth app credentials
Setup
1. Clone and install
git clone https://github.com/gordo-v1su4/pindeck.git
cd pindeck
bun install
cp .env.example .env.local
Set the self-hosted production Convex URLs in .env.local:
VITE_CONVEX_URL=https://convex.serving.cloud
VITE_CONVEX_SITE_URL=https://convex-site.serving.cloud
3. Build and serve
bun run build
bun run serve
The app runs on port 4173. The serve script auto-kills any existing process on that port.
Do not use convex dev when targeting production. The build scripts enforce the production Convex target and fail fast otherwise.
Environment variables
Frontend (.env.local)
| Variable | Required | Description |
|---|
VITE_CONVEX_URL | Yes | Self-hosted Convex client URL (https://convex.serving.cloud) |
VITE_CONVEX_SITE_URL | Yes | Self-hosted Convex HTTP/actions URL (https://convex-site.serving.cloud) |
CONVEX_SELF_HOSTED_URL | Deploy only | Self-hosted Convex deploy target (https://convex.serving.cloud) |
CONVEX_SELF_HOSTED_ADMIN_KEY | Deploy only | Admin key required by bun run deploy:convex |
Convex Dashboard (backend)
Set these in the Convex Project Settings:
| Variable | Description |
|---|
JWT_PRIVATE_KEY | RSA private key for auth tokens |
OPENROUTER_API_KEY | OpenRouter API key for VLM analysis |
OPENROUTER_VLM_MODEL | Optional model override |
FAL_KEY | fal.ai API key for image generation |
INGEST_API_KEY | API key for Discord ingest endpoint |
MEDIA_GATEWAY_URL | RustFS media API URL (https://media.v1su4.dev) |
MEDIA_GATEWAY_TOKEN | Bearer token for RustFS media API writes |
MEDIA_GATEWAY_BUCKET | RustFS bucket (pindeck) |
MEDIA_GATEWAY_UPLOAD_PREFIX | Object key prefix (media-uploads) |
AUTH_GOOGLE_ID / AUTH_GOOGLE_SECRET | Google OAuth credentials |
AUTH_GITHUB_ID / AUTH_GITHUB_SECRET | GitHub OAuth credentials |
SITE_URL | Public app URL for OAuth callbacks |
Useful scripts
| Command | Description |
|---|
bun run build | Local production frontend build; on Vercel, deploys Convex first and then runs the frontend build. |
bun run serve | Preview production build on port 4173 |
bun run deploy:convex | Deploy Convex functions |
bun run check:prod-target | Verify env points to production Convex |
Production deployments
- Convex: self-hosted at
https://convex.serving.cloud
- Frontend: Vercel project
pindeck, published at https://pindeck.dev
- Discord bot: Hosted separately — see Discord bot guide
Do not set CONVEX_DEPLOYMENT. The old Convex Cloud project has been deleted; the Pindeck production backend is self-hosted at https://convex.serving.cloud.
Ignore stale duplicate Vercel project/status contexts. Current production deploys and health checks should use only the pindeck project and https://pindeck.dev.