Skip to content

Configuration

1. Environment Variables

Source: packages/core/src/common/environments.ts (EnvironmentKeys) + this package's src/common/.

Core

NameTypeDefaultRequiredScopeDescription
APP_ENV_PORTnumber3000runtimeHTTP listen port (external 31110 in dev)
APP_ENV_HOSTstring0.0.0.0runtimeBind host
APP_ENV_BASE_PATHstring/v1/api/outreachruntimeRoute prefix
APP_ENV_NODE_IDnumber10runtimeSnowflake worker ID
APP_ENV_LOG_LEVELinfo|debug|warn|errorinforuntimeLogger level

Database

NameTypeDefaultRequiredDescription
APP_ENV_DB_URLstringPostgreSQL connection URL (nx_seller DB, outreach schema)
APP_ENV_DB_POOL_MAXnumber10Max pool size

WebSocket Redis

Consumed by ApplicationWebSocketComponent. Mode selects single vs cluster; cluster requires ..._CLUSTER_NODES or boot fails with WEBSOCKET_REDIS_CLUSTER_NODES_NOT_CONFIGURED.

NameTypeDefaultRequiredDescription
APP_ENV_WEBSOCKET_REDIS_MODEsingle|clustersingleEmitter Redis topology
APP_ENV_WEBSOCKET_REDIS_IDENTIFIERstringoutreach-ws-redisSingle-mode connection name
APP_ENV_WEBSOCKET_REDIS_HOSTstringlocalhostSingle-mode host
APP_ENV_WEBSOCKET_REDIS_PORTnumber6379Single-mode port
APP_ENV_WEBSOCKET_REDIS_PASSWORDstringRedis password (both modes)
APP_ENV_WEBSOCKET_REDIS_DBnumber0Single-mode DB index
APP_ENV_WEBSOCKET_REDIS_MAX_RETRYnumber5Single-mode max retries
APP_ENV_WEBSOCKET_REDIS_CLUSTER_IDENTIFIERstringoutreach-ws-redis-clusterCluster-mode connection name
APP_ENV_WEBSOCKET_REDIS_CLUSTER_NODESstring✓ (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 by getMigrationProcesses in migration-process.ts; both run with alwaysRun: true (idempotent re-seed on every migrate).

FileSeedsIdempotentNotes
outreach-0001-seed-permissions.tsCRUD permissions for Inquiry + Subscriber (OutreachPermissions)Upsert by code (create or update)
outreach-0002-seed-role-permissions.tsGrants all outreach permissions to OWNER, EMPLOYEE, CASHIER rolesLenient 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.

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.