2026-09-09 06:46:27 +03:30
|
|
|
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/gold_bank?schema=public"
|
2026-09-18 12:54:45 +03:30
|
|
|
|
|
|
|
|
# Must match API_PORT in the repo-root .env (source of truth for all dev
|
|
|
|
|
# ports). NestJS/Prisma only load .env from this app's own directory, so this
|
|
|
|
|
# value is kept in sync manually rather than read from the root file.
|
2026-09-09 06:46:27 +03:30
|
|
|
PORT=3000
|
2026-09-22 01:20:00 +03:30
|
|
|
|
|
|
|
|
# Customer app sessions (security hotfix stage 2).
|
|
|
|
|
# Separate from JWT_SECRET so an admin token can never validate as a customer
|
|
|
|
|
# token. Falls back to JWT_SECRET, then to a dev-only string, when unset.
|
|
|
|
|
JWT_CUSTOMER_SECRET=
|
|
|
|
|
# Customer token lifetime. The reference issued a token that never expired.
|
|
|
|
|
JWT_CUSTOMER_EXPIRES_IN=30d
|
2026-09-22 08:08:50 +03:30
|
|
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# SMS gateway — Trez panel (port of henza_server/app/Models/Sms.php:57-82)
|
|
|
|
|
# ---------------------------------------------------------------------------
|
2026-10-06 16:48:36 +03:30
|
|
|
# Trez: NEVER commit real values. The reference hardcoded its live production
|
2026-09-22 08:08:50 +03:30
|
|
|
# credentials in the source (SEC-12); those are treated as compromised and are
|
|
|
|
|
# not reused. Set the real values in .env, which is gitignored.
|
|
|
|
|
#
|
2026-10-06 16:48:36 +03:30
|
|
|
# The server always starts (D20). A misconfigured provider only warns, and
|
|
|
|
|
# outside production OTP codes are then logged locally instead.
|
|
|
|
|
# With nothing set, the relay driver SENDS REAL SMS (D26) — set
|
|
|
|
|
# SMS_PROVIDER=none on a development machine that must not.
|
2026-09-22 08:08:50 +03:30
|
|
|
|
2026-10-06 16:48:36 +03:30
|
|
|
# "relay" (default, D26), "trez", or "none" to disable sending entirely.
|
|
|
|
|
SMS_PROVIDER=relay
|
|
|
|
|
# relay — all optional; URL and secret have built-in defaults.
|
|
|
|
|
SMS_RELAY_URL=
|
|
|
|
|
SMS_RELAY_SECRET=
|
|
|
|
|
# The "host" field; blank sends this machine's first external IPv4.
|
|
|
|
|
SMS_RELAY_HOST=
|
|
|
|
|
# "kave" (default, Kavenegar) or "default" to let the gateway pick the line.
|
|
|
|
|
SMS_RELAY_PLATFORM=
|
|
|
|
|
# trez — only used with SMS_PROVIDER=trez.
|
2026-09-22 08:08:50 +03:30
|
|
|
# Defaults to the reference endpoint when unset; override for staging.
|
|
|
|
|
SMS_TREZ_URL=
|
2026-10-06 16:48:36 +03:30
|
|
|
# Required for trez:
|
2026-09-22 08:08:50 +03:30
|
|
|
SMS_TREZ_USERNAME=
|
|
|
|
|
SMS_TREZ_PASSWORD=
|
|
|
|
|
# The panel's sender line — the `PhoneNumber` form field.
|
|
|
|
|
SMS_TREZ_SENDER_LINE=
|
|
|
|
|
# Comma-separated admin numbers for order/document notifications. The reference
|
|
|
|
|
# hardcoded six mobile numbers across its controllers (STUB-05); empty means
|
|
|
|
|
# no admin notifications are sent.
|
|
|
|
|
SMS_ADMIN_RECIPIENTS=
|
2026-10-06 16:48:36 +03:30
|
|
|
|
|
|
|
|
# Accounting integration (D27) — configured in the admin panel; these two only
|
|
|
|
|
# protect the stored token and control the background worker.
|
|
|
|
|
ACCOUNTING_SECRET_KEY=
|
|
|
|
|
# "off" keeps this instance out of the background sync.
|
|
|
|
|
ACCOUNTING_WORKER=
|