Skip to Content
🎉 New release with new features and improvements! V0.0.5 Release →

Configuration Components

Use the cards below to understand each top-level configuration component quickly: key name, whether it is required, default value, and detailed options.

Environment identifier used to distinguish contexts such as development, staging, and production.

{ "env": "DEV" }
FieldTypeDefaultDescription
envstring"DEV"Environment identifier (for example: DEV, STAGING, PROD)

Database connection configuration for PostgreSQL, including connection, pool, and query tuning settings.

{ "datasource": { "host": "localhost", "port": 5432, "user": "postgres", "password": "secret", "database": "bshengine", "driverClassName": "org.postgresql.Driver", "pool": { ... }, "query": { ... }, "properties": { ... } } } }

Main Fields

FieldTypeDefaultRequiredDescription
hoststring-YesDatabase host
portnumber5432NoDatabase port
userstring-YesDatabase username
passwordstring-YesDatabase password
databasestring-YesDatabase name
driverClassNamestring"org.postgresql.Driver"NoJDBC driver class

The production setup uses host, port, and database directly.

Connection Pool (pool)

{ "datasource": { "pool": { "maximumSize": 10, "minimumIdle": 5, "idleTimeout": 300000, "connectionTimeout": 30000, "maxLifetime": 1800000 } } }
FieldTypeDefaultDescription
maximumSizenumber10Maximum number of connections in the pool
minimumIdlenumber5Minimum number of idle connections to maintain
idleTimeoutnumber300000Maximum idle time in milliseconds before removal (5 minutes)
connectionTimeoutnumber30000Maximum wait time in milliseconds for a pool connection (30 seconds)
maxLifetimenumber1800000Maximum connection lifetime in milliseconds (30 minutes)

Query Settings (query)

{ "datasource": { "query": { "queryTimeout": 30, "fetchSize": 100 } } }
FieldTypeDefaultDescription
queryTimeoutnumber30Query timeout in seconds
fetchSizenumber100Number of rows fetched per database round trip

Connection Properties (properties)

{ "datasource": { "properties": { "cachePrepStmts": "true", "prepStmtCacheSize": "250", "prepStmtCacheSqlLimit": "2048", "useServerPrepStmts": "true" } } }

These are PostgreSQL-oriented performance options for prepared statement caching.

Stores sensitive credentials that can be referenced elsewhere using the env: prefix.

For built-in secrets, see Settings secrets.

{ "secrets": { "mailing": { "provider": "gmail", "email": "your@email.com", "from": "BSH Engine <noreply@yourapp.com>", "password": "mail-app-password" }, "cloudinary": { "apiKey": "your-api-key", "apiSecret": "your-api-secret", "cloudName": "your-cloud-name", "folder": "uploads" }, "jwt": { "secret": "your-long-random-jwt-secret" } }, }

Configure allowed origins for Cross-Origin Resource Sharing (CORS).

{ "origins": { "allowed": [ "https://*", "http://*", "127.0.0.1:*" ] } }
FieldTypeDefaultDescription
allowedstring[]["https://*", "http://*", "127.0.0.1:*"]List of allowed origins

The default allows all origins. In production, specify exact domains.

Application-level variables that can be reused by templates, flows, or integrations.

{ "variables": { "host": "https://api.yourapp.com", "key": "value" } }
FieldTypeRequiredDescription
keystringNoVariable name
valuestringNoVariable value

Initial admin user configuration. Required for first-time setup.

{ "admin": { "email": "admin@example.com" } }
FieldTypeRequiredDescription
emailstringYesAdmin user email for initial setup
passwordstringNoAdmin password (optional; auto-generated if omitted)

Plugin system configuration.

{ "plugin": { "coreInstallMode": "Once" } }
FieldTypeDefaultOptionsDescription
coreInstallModestring"Once"Once, AlwaysHow core plugins are installed
  • Once: Core plugins are installed only on first startup (recommended in production).
  • Always: Core plugins are reinstalled on every startup (useful in development).