Configuration
Environment variables and configuration options for the Facilities API.
Environment Variables
Required
| Variable | Description | Example |
|---|---|---|
DATABASE_URL | PostgreSQL connection string | postgresql://user:pass@host:5432/facilities_db |
Optional
| Variable | Default | Description |
|---|---|---|
PORT | 3106 | HTTP server port |
NODE_ENV | development | Environment mode |
HOST | dev.digiwedge.com | Local hostname for Swagger |
PRODUCTION_DOMAIN | facilities-api.uat.digiwedge.com | Production domain |
APP_VERSION | 1.0 | API version shown in Swagger |
Outbox & Event Queue
The facilities service uses a transactional outbox pattern for reliable event publishing. Events are written to the FacilityOutbox table and relayed to BullMQ for downstream processing.
| Variable | Default | Description |
|---|---|---|
FACILITIES_OUTBOX_EVENT_QUEUE | facilities-events | BullMQ queue name for outbox events |
FACILITIES_OUTBOX_QUEUE | (fallback) | Legacy alias for queue name |
OUTBOX_EVENT_QUEUE | (fallback) | Global fallback for queue name |
FACILITIES_OUTBOX_POLL_INTERVAL_MS | 2000 | Relay polling interval in milliseconds |
FACILITIES_OUTBOX_CLAIM_BATCH_SIZE | 25 | Max events claimed per relay cycle |
FACILITIES_OUTBOX_CLAIM_TIMEOUT_SECONDS | 120 | Lock duration for claimed events |
FACILITIES_ENABLE_OUTBOX | false | Force-enable outbox relay (even in tests) |
FACILITIES_DISABLE_OUTBOX | false | Force-disable outbox relay |
Queue name resolution order:
FACILITIES_OUTBOX_EVENT_QUEUEFACILITIES_OUTBOX_QUEUEOUTBOX_EVENT_QUEUE- Default:
facilities-events
Redis (for BullMQ)
| Variable | Default | Description |
|---|---|---|
REDIS_URL | - | Full Redis connection URL (preferred) |
REDIS_HOST | localhost | Redis host (fallback) |
REDIS_PORT | 6379 | Redis port (fallback) |
REDIS_PASSWORD | - | Redis password (fallback) |
BULLMQ_DISABLED | false | Disable BullMQ (uses in-memory queues) |
Database
The Facilities service uses its own PostgreSQL database with the Prisma schema at:
libs/prisma/facilities-data/prisma/schema.prisma
Generate Prisma Client
pnpm nx run facilities-data:prisma:generate
Run Migrations
pnpm nx run facilities-data:prisma:migrate:dev
Seed Data
pnpm nx run facilities-data:prisma:seed
Local Development
Using Infisical
infisical run --env=dev --path=/facilities --recursive -- \
pnpm nx serve facilities-api
Using .env
Create a .env file in the project root:
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/facilities_db
PORT=3106
NODE_ENV=development
Then run:
pnpm nx serve facilities-api
Docker
Build Image
pnpm nx run facilities-api:container-local
Run Container
docker run -p 3106:3106 \
-e DATABASE_URL="postgresql://..." \
facilities-api:latest
Swagger Configuration
Swagger UI is mounted at /api/docs with:
- Theme: One Dark
- Persist Authorization: Enabled
- Request Duration: Displayed
CDN redirects are configured for Swagger assets to avoid 404s in bundled deployments.