1# =============================================================================
2# AI Software Factory — ConfigMap (NON-SENSITIVE configuration)
3#
4# Anything secret (passwords, tokens, keys) lives in the `factory-secrets`
5# Secret instead (see secret.example.yaml). Keep this file free of secrets.
6# =============================================================================
7apiVersion: v1
8kind: ConfigMap
9metadata:
10 name: factory-config
11data:
12 NODE_ENV: "production"
13
14 # Ports
15 PORT: "4000"
16 REALTIME_PORT: "4001"
17
18 # Public URLs (what browsers / email links use)
19 PUBLIC_BASE_URL: "https://factory.example.com"
20 WEB_URL: "https://factory.example.com"
21 API_URL: "https://factory.example.com/api"
22 REALTIME_URL: "wss://factory.example.com/ws"
23
24 # Service endpoints INSIDE the cluster (stable ClusterIP service names).
25 # The app reads the assembled URLs below (same variable names as
26 # .env.example). DATABASE_URL contains credentials, so it lives in the
27 # factory-secrets Secret instead; envFrom sources are applied in order, so
28 # secret values win over configmap values for any key defined in both.
29 REDIS_URL: "redis://factory-redis:6379"
30 S3_ENDPOINT: "https://s3.us-east-1.amazonaws.com"
31 DATABASE_HOST: "factory-db"
32 DATABASE_PORT: "5432"
33 REDIS_HOST: "factory-redis"
34 REDIS_PORT: "6379"
35
36 # Search (OpenSearch) — username/password, if any, go in the Secret.
37 # `opensearch:9200` is a PLACEHOLDER for the managed/cluster-internal
38 # endpoint (e.g. https:
39 # for Amazon OpenSearch Service, or a StatefulSet Service you deploy).
40 SEARCH_URL: "http://opensearch:9200"
41 SEARCH_INDEX_PREFIX: "factory"
42
43 # Object storage (S3-compatible). Endpoint + credentials live in the
44 # Secret; bucket/region/path-style are non-sensitive.
45 S3_BUCKET: "factory-uploads"
46 S3_REGION: "us-east-1"
47 S3_FORCE_PATH_STYLE: "false"
48
49 # Auth / session tuning (values, not secrets)
50 JWT_EXPIRES_IN: "15m"
51 REFRESH_TOKEN_TTL_DAYS: "30"
52 BCRYPT_ROUNDS: "12"
53
54 # Realtime
55 REALTIME_HEARTBEAT_MS: "30000"
56 YJS_STORAGE_PREFIX: "yjs"
57
58 # Webhooks
59 WEBHOOK_RETRY_MAX: "8"
60 WEBHOOK_TIMEOUT_MS: "10000"
61
62 # Rate limiting
63 RATE_LIMIT_WINDOW_MS: "60000"
64 RATE_LIMIT_MAX: "300"
65
66 # Observability (Phase 15)
67 OTEL_ENABLED: "false"
68 OTEL_EXPORTER_OTLP_ENDPOINT: "http://otel-collector.monitoring.svc.cluster.local:4318"
69