Stack

From docs/SYSTEM_OVERVIEW.md § Stack and CLAUDE.md.

  • Runtime: Bun (never node/npm/npx/ts-node)
  • Language: TypeScript, strict mode
  • Database: PostgreSQL 15 with pgvector extension
  • Queue: BullMQ on Redis 7
  • Scraper: Crawlee + Playwright (Chromium headless)
  • Maps: Google Places API (direct, not via Serper)
  • Auth: Keycloak 22 (JWT)
  • Infra: Docker Compose for local dev (see Local Development)

Bun-native APIs in use

  • Bun.sql for Postgres (project rule: never pg or postgres.js)
  • Bun.redis for Redis (project rule: never ioredis)
  • Bun.file over node:fs
  • Bun.serve() for HTTP (no Express)
  • Bun auto-loads .env — no dotenv import

Notable dependencies

@crawlee/playwright, @mendable/firecrawl-js, bullmq, zod.

Warning

Legacy pg and ioredis imports still exist in several files. Project CLAUDE.md says to migrate to Bun.sql / Bun.redis. P2 issue in Known Issues.

See also

Local Development, System Overview, Repository Layout.