Contents

GoCore loads environment variables from the .env file and validates them at startup with fail-fast behavior.

cp .env.example .env

Source: github.com/zatrano/gocore/.env.example

Full list

APP_NAME=ZATRANO
APP_ENV=development                 # development | staging | production
APP_VERSION=dev
APP_SHUTDOWN_TIMEOUT=15s

HTTP_HOST=0.0.0.0
HTTP_PORT=8080
HTTP_READ_TIMEOUT=10s
HTTP_WRITE_TIMEOUT=15s
HTTP_IDLE_TIMEOUT=60s
HTTP_BODY_LIMIT_BYTES=4194304       # 4MB
HTTP_REQUEST_TIMEOUT=30s
HTTP_CORS_ALLOW_ORIGIN=*

DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=postgres
DB_NAME=enterprise
DB_SSLMODE=disable                  # 'require' or higher mandatory in production
DB_MAX_CONNS=20
DB_MIN_CONNS=2
DB_MAX_CONN_LIFETIME=1h
DB_MAX_CONN_IDLE_TIME=30m
DB_QUERY_TIMEOUT=5s
DB_CONNECT_TIMEOUT=5s

AUTH_JWT_SECRET=change-me-in-production-please-32b   # >=32 characters in production
AUTH_MFA_ENCRYPTION_KEY=
AUTH_JWT_ISSUER=enterprise
AUTH_JWT_AUDUENCE=zatrano-api
AUTH_ACCESS_TOKEN_TTL=15m
AUTH_REFRESH_TOKEN_TTL=168h
AUTH_MAX_LOGIN_ATTEMPTS=5
AUTH_LOCKOUT_DURATION=15m
AUTH_VERIFY_TOKEN_TTL=24h
AUTH_RESET_TOKEN_TTL=1h
AUTH_EMAIL_LINK_BASE_URL=http://localhost:8080

OAUTH_CALLBACK_BASE_URL=http://localhost:8080/api/v1/auth/oauth
OAUTH_GOOGLE_CLIENT_ID=
OAUTH_GOOGLE_CLIENT_SECRET=
OAUTH_GITHUB_CLIENT_ID=
OAUTH_GITHUB_CLIENT_SECRET=

SEC_RATE_LIMIT_MAX=100
SEC_RATE_LIMIT_WINDOW=1m
SEC_MAX_UPLOAD_BYTES=10485760       # 10MB
SEC_ALLOWED_UPLOAD_MIME=image/jpeg,image/png,application/pdf,text/csv,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel
SEC_TRUSTED_PROXIES=

SEC_TURNSTILE_SITE_KEY=
SEC_TURNSTILE_SECRET_KEY=

I18N_DEFAULT_LOCALE=tr              # DEFAULT_LOCALE must be in SUPPORTED
I18N_SUPPORTED=tr,en               # each locale requires pkg/i18n/locales/<locale>.json

SMTP_HOST=
SMTP_PORT=587
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_FROM=
SMTP_TLS_MODE=starttls             # none | starttls | tls
SMTP_TIMEOUT=15s

CONTACT_RECIPIENT_EMAIL=

NOTIFY_SMS_FROM=                   # Message header (Netgsm msgheader / İleti Merkezi sender)
NOTIFY_NETGSM_USER=                # Netgsm subscriber number (850xxxxxxx, 312XXXXXXX, etc.)
NOTIFY_NETGSM_PASSWORD=            # Sub-user (API User) password
NOTIFY_NETGSM_APPNAME=zatrano      # Netgsm appname parameter
NOTIFY_NETGSM_ENCODING=TR          # UTF-8 | TR | UNICODE
NOTIFY_NETGSM_IYSFILTER=0          # 0 informational | 11 individual commercial | 12 merchant commercial
NOTIFY_ILETIMERKEZI_KEY=           # İleti Merkezi API key
NOTIFY_ILETIMERKEZI_HASH=          # İleti Merkezi API hash (generated in panel)
NOTIFY_ILETIMERKEZI_IYS=0          # 0 no query | 1 İYS query
NOTIFY_ILETIMERKEZI_IYS_LIST=BIREYSEL  # BIREYSEL | TACIR (required when IYS=1)

PAYMENT_CALLBACK_URL=
PAYMENT_FIELD_ENCRYPTION_KEY=
PAYMENT_IYZICO_API_KEY=
PAYMENT_IYZICO_SECRET_KEY=
PAYMENT_IYZICO_BASE_URL=https://sandbox-api.iyzipay.com
PAYMENT_MOKA_DEALER_CODE=
PAYMENT_MOKA_USERNAME=
PAYMENT_MOKA_PASSWORD=
PAYMENT_MOKA_BASE_URL=https://service.refmokaunited.com
PAYMENT_MOKA_SOFTWARE=zatrano

See the Deployment page for the production checklist.