Skip to main content

Local development

Commands below are the ones in pnxt-api-nestjs/package.json, the API README, and documentation-analysis/developer-workflows.md. Migrations are not applied when containers start.

Three processes

yarn start:api commits outbox rows and serves HTTP. It does not dispatch the outbox and it does not run channel-sync crons. Start the worker and the scheduler as well.

Node version​

SourceRequirement
pnxt-api-nestjs/package.json engines.node>=24.0.0
pnxt-api-nestjs/README.md and the workspace READMENode.js 20+

Unknown — requires developer confirmation: which version CI and production actually run. The engines field is the package contract. Yarn is pinned by the API packageManager field to 1.22.22.

API​

From pnxt-api-nestjs:

cp .env.example .env
yarn
yarn prisma:generate
docker compose up -d
docker compose run --rm api yarn migrate:deploy
docker compose run --rm api node dist/cli seed:demo
yarn start:api
yarn start:worker
yarn start:scheduler

yarn dev is nest start --watch. The README uses that as the host API process against Compose dependencies. It still does not replace the worker or the scheduler.

seed:demo is nestjs-command seed:demo. The example env says DEMO_SEED_PASSWORD must be set on any reachable host because a fallback password is committed. Do not copy that fallback into docs or chat.

Compose uses pgvector/pgvector:pg16 behind PgBouncer, Redis, an AI gateway container (bifrost), and a Bharat Address sidecar. Host database URLs stay in .env. Container database URLs are rewritten to PgBouncer. DIRECT_DATABASE_URL bypasses the pooler for migrations.

Required boot settings are listed in Environment.

Swagger UI is mounted only when APP_ENV is not production, at /{doc.prefix} (default /docs). See OpenAPI.

Bull Board is mounted at /admin/queues and protected with HTTP basic auth (BULL_BOARD_USER, BULL_BOARD_PASSWORD). That route is in monitoring.module.ts.

Admin​

Package manager is pnpm (pnpm-lock.yaml).

cd pnxt-admin
pnpm dev
pnpm verify

The Vite dev server is the admin app. Point its VITE_API_URL at the API.

Warehouse​

Package manager is npm. Scripts in pnxt-warehouse/package.json:

npm start
npm run android
npm run ios
npm run web

Set EXPO_PUBLIC_API_URL. No test script was present in that package.json.

Quality gate before you push API changes​

yarn verify
yarn architecture:check

yarn verify runs lint, Prettier check, typecheck, build, and Jest. Details are in Running tests.