Skip to content

Configuration Reference

Configuration options and environment variables for Ignis applications.

Quick Reference

CategoryPurposeKey Variables
ApplicationApp identity and timezoneAPP_ENV_APPLICATION_NAME, APP_ENV_APPLICATION_TIMEZONE
ServerHTTP server settingsAPP_ENV_SERVER_HOST, APP_ENV_SERVER_PORT
DatabasePostgreSQL connectionAPP_ENV_POSTGRES_HOST, APP_ENV_POSTGRES_DATABASE
AuthenticationJWT tokens and secretsAPP_ENV_JWT_SECRET, APP_ENV_APPLICATION_SECRET
LoggingLog file paths and transportsAPP_ENV_LOGGER_FOLDER_PATH
StorageMinIO/S3 file storageAPP_ENV_MINIO_HOST, APP_ENV_MINIO_ACCESS_KEY
MailSMTP email sendingAPP_ENV_MAIL_HOST, APP_ENV_MAIL_USER

Environment Variable Prefix

Ignis uses the APP_ENV_ prefix to avoid conflicts with system variables:

bash
# ✅ Ignis variables
APP_ENV_POSTGRES_HOST=localhost

# ❌ Might conflict with system
POSTGRES_HOST=localhost

Quick Start

Create a .env file in your project root:

bash
# .env
APP_ENV_APPLICATION_NAME=my-app
APP_ENV_SERVER_HOST=0.0.0.0
APP_ENV_SERVER_PORT=3000
APP_ENV_POSTGRES_HOST=localhost
APP_ENV_POSTGRES_DATABASE=my_database

What's in This Section

Configuration Patterns

1. Accessing Variables

typescript
// 1. Direct access
const host = process.env.APP_ENV_POSTGRES_HOST;

// 2. Using helper (recommended)
import { applicationEnvironment } from '@venizia/ignis-helpers';
import { EnvironmentKeys } from '@venizia/ignis';
const host = applicationEnvironment.get<string>(EnvironmentKeys.APP_ENV_POSTGRES_HOST);

2. Environment Files

project/
├── .env                 # Default (development)
├── .env.local           # Local overrides (gitignored)
├── .env.production      # Production values
└── .env.example         # Template (committed)

3. Validation on Startup

Ignis validates required variables on startup. Missing values cause clear error messages.

Related: Environment Variables Reference | DataSources Guide

EnvironmentKeys Class

typescript
import { EnvironmentKeys } from '@venizia/ignis';
ConstantDescription
APP_ENV_APPLICATION_NAMEApplication display name
APP_ENV_APPLICATION_TIMEZONEApplication timezone (e.g., 'Asia/Ho_Chi_Minh')
APP_ENV_APPLICATION_SECRETApplication-wide secret key
APP_ENV_JWT_SECRETJWT signing secret
APP_ENV_JWT_EXPIRES_INJWT token expiration
APP_ENV_LOGGER_FOLDER_PATHLog file output directory
APP_ENV_APPLICATION_ROLESApplication role definitions
APP_ENV_APPLICATION_DS_MIGRATIONDataSource name for migrations
APP_ENV_APPLICATION_DS_AUTHORIZEDataSource name for authorization
APP_ENV_APPLICATION_DS_OAUTH2DataSource name for OAuth2
APP_ENV_OAUTH2_VIEW_FOLDEROAuth2 view templates folder
APP_ENV_SERVER_HOSTHTTP server host (e.g., '0.0.0.0')
APP_ENV_SERVER_PORTHTTP server port (e.g., 3000)
APP_ENV_SERVER_BASE_PATHBase URL path prefix
APP_ENV_DATASOURCE_NAMEDefault datasource name
APP_ENV_POSTGRES_HOSTPostgreSQL host
APP_ENV_POSTGRES_PORTPostgreSQL port
APP_ENV_POSTGRES_USERNAMEPostgreSQL username
APP_ENV_POSTGRES_PASSWORDPostgreSQL password
APP_ENV_POSTGRES_DATABASEPostgreSQL database name

Usage:

typescript
import { applicationEnvironment } from '@venizia/ignis-helpers';
import { EnvironmentKeys } from '@venizia/ignis';

const dbHost = applicationEnvironment.get<string>(EnvironmentKeys.APP_ENV_POSTGRES_HOST);