Environment Variables
Required Environment Variables
Database Configuration
# PostgreSQL - OSAS Database
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=your_password
DBS=osas_db
DB_DIALECT=postgres
# Connection Pool
DB_POOL_MAX=5
DB_POOL_MIN=0
DB_POOL_ACQUIRE=30000
DB_POOL_IDLE=10000
# ONMART Database
ONMART_DB_HOST=localhost
ONMART_DB_PORT=5432
ONMART_DB_USER=postgres
ONMART_DB_PASSWORD=your_password
ONMART_DBS=onmart_db
Application Configuration
# Server
PORT=4220
BASEURL=http://localhost:4220
# JWT Authentication
JWT_SECRET=your_jwt_secret_key
JWT_EXPIRATION=86400 # 24 hours in seconds
# Custom Configuration
CUSTOM_ALPHABET=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
Security Configuration
# Rate Limiting
RATE_LIMIT_WINDOW_MS=10000 # 10 seconds
RATE_LIMIT_MAX=20 # 20 requests per window
# CORS
ORIGIN_CORS=http://localhost:3000,https://yourdomain.com
External API URLs
# Internal Services
API_URL_AGENT_ONAGENT=http://agent-system/api
API_URL_USERONDELIV=http://user-service/api
API_URL_USERSTATE=http://user-state/api
API_URL_SUNSHINE=http://sunshine-api/api
API_URL_APISAT=http://apisat/api
APISAT_LINK=http://apisat-link/api
# Partner APIs
API_EATSOK=https://eatsok-api.com
Courier Partner Credentials
# JNE
JNE_API_KEY=your_jne_api_key
JNE_USERNAME=your_jne_username
JNE_PASSWORD=your_jne_password
# Lion Parcel
LIONPARCEL_BEARER_TOKEN=your_lion_parcel_token
LIONPARCEL_PICKUP_CRON=*/30 * * * * # Every 30 minutes
# AnteRaja
ANTERAJA_URL=https://anteraja-api.com
ANTERAJA_ACCESS_KEY_ID=your_access_key
ANTERAJA_SECRET_ACCESS_KEY=your_secret_key
ANTERAJA_SECRET_KEY_ONDEL=your_webhook_secret
# JT Cargo
JTCARGO_API_KEY=your_jtcargo_key
JTCARGO_USERNAME=your_jtcargo_username
JTCARGO_PASSWORD=your_jtcargo_password
Authentication Keys
# Partner Integration Authentication
EATSOK_API_KEY=your_eatsok_api_key
EATSOK_SECRET_KEY_ONDEL=your_eatsok_secret
LINKED_ACCOUNT_SECRET_KEY=your_linked_secret
INTEGRATION_PROC_KEY=your_integration_key
Marketplace Webhooks
# Blibli
BLIBLI_WEBHOOK_KEY=your_blibli_webhook_key
# OnMarket
ONMARKET_WEBHOOK_KEY=your_onmarket_webhook_key
Payment Gateway
# Xendit
XENDIT_API_KEY=your_xendit_api_key
XENDIT_SECRET_KEY=your_xendit_secret
Optional Environment Variables
# Email Configuration (Nodemailer)
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=your_email@gmail.com
EMAIL_PASSWORD=your_app_password
EMAIL_FROM=OnDelivery <noreply@ondelivery.com>
# File Upload Limits
MAX_FILE_SIZE=10485760 # 10MB in bytes
# Logging
LOG_LEVEL=info # error, warn, info, debug
Environment Variable Loading
The application uses dotenv for environment variable management:
require('dotenv').config();
Best Practices:
- Use
.envfile for local development - Use environment-specific
.env.production,.env.development - Never commit
.envfiles to version control - Use
dotenv-vaultfor secure environment management (as mentioned in README)
Vault Management:
# Push to dotenv-vault
npx dotenv-vault@latest push