2026-09-09 19:39:13 +03:30
|
|
|
# Database configuration
|
|
|
|
|
POSTGRES_USER=postgres
|
|
|
|
|
POSTGRES_PASSWORD=postgres
|
|
|
|
|
POSTGRES_DB=goldbank
|
|
|
|
|
|
2026-09-09 23:31:31 +03:30
|
|
|
# Host port exposed for PostgreSQL (used by docker-compose db service)
|
|
|
|
|
EXTERNAL_DB_PORT=5432
|
|
|
|
|
|
|
|
|
|
# Prisma connection string (inside Docker network use hostname "db")
|
2026-09-09 19:39:13 +03:30
|
|
|
DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?schema=public
|
|
|
|
|
|
2026-09-18 12:54:45 +03:30
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# Dev server ports — SINGLE SOURCE OF TRUTH for this monorepo.
|
|
|
|
|
# Every app's dev script/config reads its port from here. Do not hardcode a
|
|
|
|
|
# port anywhere else. strictPort is enabled everywhere: if a port below is
|
|
|
|
|
# already taken, the dev server fails with a clear error instead of silently
|
|
|
|
|
# picking another port.
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
API_PORT=3000
|
|
|
|
|
ADMIN_PANEL_PORT=5180
|
|
|
|
|
USER_APP_PORT=5181
|
|
|
|
|
USER_APP_V2_PORT=5182
|
|
|
|
|
|
|
|
|
|
# API Configuration (kept for any tooling that still reads bare PORT)
|
2026-09-09 19:39:13 +03:30
|
|
|
PORT=3000
|
2026-09-22 21:28:17 +03:30
|
|
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# Authentication
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# Admin JWT signing secret. REQUIRED in any real deployment — without it the
|
|
|
|
|
# API falls back to a well-known development string.
|
|
|
|
|
JWT_SECRET=
|
|
|
|
|
# Admin token lifetime (default 12h).
|
|
|
|
|
JWT_EXPIRES_IN=
|
|
|
|
|
# Customer JWT signing secret. Deliberately SEPARATE from JWT_SECRET so an
|
|
|
|
|
# admin token can never validate as a customer token (T1).
|
|
|
|
|
JWT_CUSTOMER_SECRET=
|
|
|
|
|
# Customer token lifetime (default 30d).
|
|
|
|
|
JWT_CUSTOMER_EXPIRES_IN=
|
|
|
|
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# ⚠ DELIVERY ONLY — REMOVE BEFORE THE REAL RELEASE (D20 / ISSUES REL-01)
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# A fixed OTP that signs in ANY active customer, alongside the real code.
|
2026-09-23 00:22:50 +03:30
|
|
|
# MUST BE EXACTLY 4 DIGITS: the apps' login box has four single-character
|
|
|
|
|
# inputs and only submits at four (LoginView.vue:43). A longer code still works
|
|
|
|
|
# over the API but cannot be typed into either app.
|
2026-09-22 21:28:17 +03:30
|
|
|
# Leave it EMPTY or unset to disable it completely — that is the correct state
|
|
|
|
|
# for production. While it is set, the API prints a warning banner at boot.
|
|
|
|
|
OTP_MASTER_CODE=
|
|
|
|
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# SMS gateway (Trez). Leave blank to disable sending: the server still boots,
|
|
|
|
|
# messages are logged instead of sent, and customers cannot receive a login
|
|
|
|
|
# code (D20). Never commit real values.
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# "trez" (default) or "none" to disable explicitly.
|
|
|
|
|
SMS_PROVIDER=
|
|
|
|
|
# Override only for staging; defaults to the provider's live endpoint.
|
|
|
|
|
SMS_TREZ_URL=
|
|
|
|
|
SMS_TREZ_USERNAME=
|
|
|
|
|
SMS_TREZ_PASSWORD=
|
|
|
|
|
SMS_TREZ_SENDER_LINE=
|
|
|
|
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# Uploads
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# Absolute path for uploaded files; defaults to <api>/storage/uploads.
|
|
|
|
|
UPLOAD_DIR=
|