# ── SERVER ─────────────────────────────────────────────────────────────────────── SERVICE_API_PORT=4050 # HTTP server port (renamed from PORT) SERVICE_TCP_PORT=4051 # NestJS TCP microservice listener SERVICE_TCP_HOST=0.0.0.0 # TCP binding address (0.0.0.0 = all interfaces) # SERVICE_MCP_PORT=4052 # MCP server port — reserved for future use NODE_ENV=development # ── DATABASE ───────────────────────────────────────────────────────────────────── DATABASE_URL='mysql://konstruksi:K43351@127.0.0.1:3306/konstruksi_p001_document' SHADOW_DATABASE_URL="mysql://prisma_shadow:prisma_shadow@127.0.0.1:3306/prisma_shadow_konstruksi_document" # ── CACHE & MESSAGE BROKER ─────────────────────────────────────────────────────── REDIS_URL='redis://konstruksi:K43351@127.0.0.1:6384' # ── SERVICE IDENTITY ───────────────────────────────────────────────────────────── SERVICE_ID='DOC' # Renamed from APP_ID SERVICE_SLUG='document' # BullMQ queue slug (renamed from SERVICE_NAME) SERVICE_NAME='Document' # Human-readable display name (renamed from APP_NAME) SERVICE_LOGO_URL='https://api-dev.company.com/auth/public/logo/logo-primary.png' # Renamed from APP_LOGO_URL # ── QUEUE SETTINGS ──────────────────────────────────────────────────────────────── METRICS_INTERVAL_MS=300000 # 5 minutes # ── INTER-SERVICE COMMUNICATION — HTTP via Gateway (current) ───────────────────── SERVICE_URL_AUTH='http://127.0.0.1:4001/auth' SERVICE_URL_BASE='http://127.0.0.1:4001/base' SERVICE_URL_DOCUMENT='http://127.0.0.1:4001/document' SERVICE_URL_TRANSMITTAL='http://127.0.0.1:4001/transmittal' SERVICE_URL_ANNOTATION='http://127.0.0.1:4001/annotation' # ── INTER-SERVICE COMMUNICATION — TCP Direct (planned migration) ────────────────── # Uncomment and configure per service as TCP migration rolls out (Guide 03, Part 4.1) # AUTH_TCP_HOST=127.0.0.1 # AUTH_TCP_PORT=4011 # BASE_TCP_HOST=127.0.0.1 # BASE_TCP_PORT=4021 # ── AUTHENTICATION & JWT ───────────────────────────────────────────────────────── JWT_SECRET='KonstruksiAI-2024' JWT_EXPIRES_IN='1h' # ── TYPESENSE ──────────────────────────────────────────────────────────────────── TYPESENSE_HOST='typesense.konstruksi.ai' TYPESENSE_PROTOCOL='https' TYPESENSE_PORT=443 TYPESENSE_API_KEY='ts_075076bf086a27d879cbd638e8359a8a20c520c4a667f466a83d7d47aaf2b173' # ── ONLYOFFICE DOCUMENT SERVER ─────────────────────────────────────────────────── ONLYOFFICE_DOC_SERVER_PUBLIC_URL=https://office.konstruksi.ai ONLYOFFICE_JWT_SECRET="4r+7QLTQN2/yAabukytO+sbb17Ngv0q+ohgC4T4AF9c=" ONLYOFFICE_FILE_ACCESS_SECRET="c78566bd3a213e39dd81775a08716118f4f694797eb6f4ed6f2d542c677fb584" ONLYOFFICE_BACKEND_INTERNAL_BASE_URL=http://10.192.10.27:4050/api ONLYOFFICE_EDITOR_UI_THEME=theme-dark # OnlyOffice editor UI theme — dark | light # ── FEATURE FLAGS ──────────────────────────────────────────────────────────────── # Optional feature toggles (default: enabled) FEATURE_AUTODESK_ENABLED=true FEATURE_ASPOSE_ENABLED=true # ── AUTODESK (OPTIONAL) ───────────────────────────────────────────────────────── AWS_REGION= AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= S3_BUCKET_NAME= ADSK_CLIENT_ID= ADSK_CLIENT_SECRET= # ── ASPOSE (OPTIONAL) ─────────────────────────────────────────────────────────── ASPOSE_CLIENT_ID= ASPOSE_CLIENT_SECRET= ASPOSE_STORAGE_NAME= # ── EXTRACTOR ──────────────────────────────────────────────────────────────────── EXTRACTOR_ENABLE_COMPRESSION=true