Configuration
1. Environment Variables
Source:
packages/core/src/common/environments.ts(EnvironmentKeys) + this package'ssrc/common/.
Core
| Name | Type | Default | Required | Scope | Description |
|---|---|---|---|---|---|
APP_ENV_PORT | number | 3000 | runtime | HTTP listen port (external 31110 in dev) | |
APP_ENV_HOST | string | 0.0.0.0 | runtime | Bind host | |
APP_ENV_BASE_PATH | string | /v1/api/outreach | runtime | Route prefix | |
APP_ENV_NODE_ID | number | 10 | ✓ | runtime | Snowflake worker ID |
APP_ENV_LOG_LEVEL | info|debug|warn|error | info | runtime | Logger level |
Database
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
APP_ENV_DB_URL | string | — | ✓ | PostgreSQL connection URL (nx_seller DB, outreach schema) |
APP_ENV_DB_POOL_MAX | number | 10 | Max pool size |
WebSocket Redis
Consumed by
ApplicationWebSocketComponent. Mode selects single vs cluster; cluster requires..._CLUSTER_NODESor boot fails withWEBSOCKET_REDIS_CLUSTER_NODES_NOT_CONFIGURED.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
APP_ENV_WEBSOCKET_REDIS_MODE | single|cluster | single | Emitter Redis topology | |
APP_ENV_WEBSOCKET_REDIS_IDENTIFIER | string | outreach-ws-redis | Single-mode connection name | |
APP_ENV_WEBSOCKET_REDIS_HOST | string | localhost | Single-mode host | |
APP_ENV_WEBSOCKET_REDIS_PORT | number | 6379 | Single-mode port | |
APP_ENV_WEBSOCKET_REDIS_PASSWORD | string | — | Redis password (both modes) | |
APP_ENV_WEBSOCKET_REDIS_DB | number | 0 | Single-mode DB index | |
APP_ENV_WEBSOCKET_REDIS_MAX_RETRY | number | 5 | Single-mode max retries | |
APP_ENV_WEBSOCKET_REDIS_CLUSTER_IDENTIFIER | string | outreach-ws-redis-cluster | Cluster-mode connection name | |
APP_ENV_WEBSOCKET_REDIS_CLUSTER_NODES | string | — | ✓ (cluster only) | host:port,host:port,... cluster seeds |
No
APP_ENV_KAFKA_*variables — Outreach has no Kafka.
2. Feature Flags
None. No runtime feature toggles; behavior is fixed in code.
3. Seeded Data
Migration processes in
src/migrations/processes/. Loaded bygetMigrationProcessesinmigration-process.ts; both run withalwaysRun: true(idempotent re-seed on every migrate).
| File | Seeds | Idempotent | Notes |
|---|---|---|---|
outreach-0001-seed-permissions.ts | CRUD permissions for Inquiry + Subscriber (OutreachPermissions) | ✓ | Upsert by code (create or update) |
outreach-0002-seed-role-permissions.ts | Grants all outreach permissions to OWNER, EMPLOYEE, CASHIER roles | ✓ | Lenient baseline; skips already-granted; tightened later via merchant policy API |
4. Configuration Storage (Configuration table)
Not used. Outreach has no per-merchant Configuration rows — both tables are global and there are no encrypted credentials.