401c65762bf2879d185222670bbd5efdaaaac3f1
Same bun-types-vs-@types/bun fix as continuum-common. Also fixes a real noUncheckedIndexedAccess violation in the /health route: db.execute()'s result is T[], so rows[0] is 'T | undefined', not T — destructuring assumed it always existed. Verified with a clean 'bunx tsc --noEmit'.
continuum-backend
Cloud control plane for Continuum. Bun + ElysiaJS, PostgreSQL (via pgCat/PgBouncer, with pgvector for frame embeddings), Redis Streams, and Cloudflare R2 storage.
Run
bun install
cp .env.example .env # fill in DATABASE_URL, REDIS_URL, R2_*, SUPABASE_JWT_SECRET
bun run db:generate && bun run db:migrate
bun run dev
Layout
src/db/— Drizzle schema (printers,farms,print_jobs,frame_embeddings) and client, pointed at pgCat.src/db/validators.tsderives Elysia/TypeBox request validators straight from the Drizzle tables viadrizzle-typebox, so the Postgres schema and the API validators come from one definition instead of two hand-synced ones.src/s3/— R2 presigned URL helpers (PUTfor client uploads,GETfor the edge proxy).src/queue/— Redis client +XADDhelper pushing ontostream:camera_framesforcontinuum-ai-worker.src/routes/—/auth,/farms,/printers,/jobs, and the edge-gateway WebSocket at/ws/edge/v1.
frame_embeddings.embedding requires the vector extension:
CREATE EXTENSION IF NOT EXISTS vector;
Description
Languages
TypeScript
100%