Skip to main content
Sonamu uses PostgreSQL by default. It reads database credentials from the active environment and builds presets such as development, staging, production, test, and fixture.

Required Variables

.env.development
Never hardcode database passwords in sonamu.config.ts. Store them in .env files or in your deployment environment.

Database Names

Sonamu chooses the database name in this order:
  1. SONAMU_DB_NAME from the active environment
  2. A generated name based on projectName
Generated names use the lowercased project name plus the environment suffix:

sonamu.config.ts

The config no longer needs database.name or database.environments.
sonamu.config.ts
Use defaultOptions only for Knex options that should be shared by all generated presets: pool settings, timeouts, SSL defaults, or debug settings. Sonamu fills host, port, user, password, and database from SONAMU_DB_*.

Environment-Specific Files

.env.development

Read-Only Replica

Set SONAMU_DB_READONLY_* when an environment has a separate read-only database. Any missing read-only field uses the same environment’s main database value.
.env.production
Use DB.getDB("r") for read-only queries. It resolves to development_readonly, staging_readonly, production_readonly, or test_readonly based on NODE_ENV.

Fixture Database

Fixture variables apply only to the test fixture database.
.env.test
If SONAMU_DB_FIXTURE_NAME is missing, Sonamu uses the generated fixture database name.