Skip to main content
Pindeck is composed of three independently deployed targets. Each serves a distinct role and is deployed through a different process.

Architecture

Convex

Backend functions, real-time database, auth, and media storage actions. Deployed with bun run deploy:convex.

Vercel

The React/Vite SPA built as a static site and served via Vercel’s CDN.

Discord bot

An always-on Node.js worker hosted on your own server or Hostinger. Lives in a separate repository and is managed independently.

Production-first philosophy

Every script in this project enforces that VITE_CONVEX_URL points to the production Convex deployment before running. The bun run check:prod-target script is automatically prepended to every build, serve, and deploy command — it will fail fast if the environment is misconfigured. This means there is no concept of a “staging” Convex target in normal development. You always work against production.

Script reference

CommandDescription
bun run buildProduction Vite build
bun run serveServe production bundle on port 4173
bun run deploy:convexDeploy Convex functions to production
bun run check:prod-targetVerify VITE_CONVEX_URL is the production Convex URL
bun run serve automatically kills any process already listening on port 4173 before starting.

Next steps

Build docs developers (and LLMs) love