Configuration

Three separate things, often confused: what the operator sets for the whole instance, what the process is told through its environment, and what each account chooses for itself.

config.toml

Written to ~/.config/ontoplano/config.toml on first run, and edited by the operator or through /admin. Its shape is the OntoplanoConfig interface, so this table is that interface.

[server]

Key Type Means
host string
port number

[database]

Key Type Means
path string

[week]

Key Type Means
firstDay number
generateDay number

[registration]

Key Type Means
mode RegistrationMode

[account]

Key Type Means
allowEmailChange boolean Whether a person may move their account to another address.

allowEmailChange

Whether a person may move their account to another address.

Off unless the instance says otherwise: an email address is what an account is here — it signs in and it receives the reset link — so letting it be changed is the operator's call, not the account holder's.

[reports]

Key Type Means
clientErrors boolean Whether the app may ask people to send in client-side errors.

clientErrors

Whether the app may ask people to send in client-side errors.

Off by default: a stack trace is somebody's data leaving their browser, so the instance opts in, and then each person is asked once and can say no. Nothing is ever sent before both have said yes.

[ui]

Key Type Means
undoSeconds number Seconds a delete waits, undoably, before it happens. Zero turns it off.

Environment

Every ONTOPLANO_* variable the code actually reads, and where it is read. A variable that stops being consulted leaves this table by itself, which is the point — an env var nobody reads any more is the kind of thing that stays in a deployment script for years.

Variable Read in
ONTOPLANO_ALLOW_PUSH scripts/guard-push.mjs
ONTOPLANO_ASSET_ORIGIN scripts/build-twa.mjs
ONTOPLANO_BACKUP_RETENTION_DAYS src/lib/server/services/legal.ts
ONTOPLANO_BAN_CONTROL src/lib/server/services/protection.ts
ONTOPLANO_BAN_CONTROL_CMD src/lib/server/services/protection.ts
ONTOPLANO_CONFIG_DIR src/lib/server/config.ts
ONTOPLANO_CONTACT_EMAIL src/lib/server/services/legal.ts
ONTOPLANO_DEMO src/lib/server/settings.ts
ONTOPLANO_DEMO_EMAIL src/lib/server/settings.ts
ONTOPLANO_DEMO_PASSWORD src/lib/server/settings.ts
ONTOPLANO_DEMO_URL src/lib/server/settings.ts
ONTOPLANO_DEMO_VIDEO src/routes/+page.server.ts
ONTOPLANO_FAIL2BAN_LOG src/lib/server/services/protection.ts
ONTOPLANO_HEALTH_TOKEN src/lib/server/settings.ts
ONTOPLANO_HTTPS src/hooks.server.ts
ONTOPLANO_JURISDICTION src/lib/server/services/legal.ts
ONTOPLANO_OPERATOR src/lib/server/services/legal.ts
ONTOPLANO_ORIGIN scripts/build-twa.mjs
ONTOPLANO_OWNER_ID src/lib/server/settings.ts
ONTOPLANO_PAYMENT_PROVIDER src/lib/server/settings.ts
ONTOPLANO_POLICY_UPDATED src/lib/server/services/legal.ts
ONTOPLANO_PRICE_CURRENCY src/lib/server/settings.ts
ONTOPLANO_REGISTRATION src/lib/server/services/registration.ts
ONTOPLANO_REQUIRE_VERIFIED_EMAIL src/lib/server/services/access.ts
ONTOPLANO_SELF_HOST scripts/check-billing.ts, src/lib/server/settings.ts
ONTOPLANO_SKIP_MIGRATION_CHECK src/lib/server/db/assert-migrated.ts
ONTOPLANO_STAGING src/lib/server/settings.ts
ONTOPLANO_TRIAL_REQUIRES_CARD src/lib/server/settings.ts
ONTOPLANO_TRUST_PROXY src/lib/server/rate-limit.ts

Per-account settings

Rows in user_settings, one per account per key. These are choices a person makes about their own copy of the app, not the operator.

Key Constant
onboarding.done ONBOARDED_KEY
planner.grid_end_hour GRID_END_KEY
planner.grid_start_hour GRID_START_KEY
shopping.currency CURRENCY_KEY
ui.hiddenSections HIDDEN_SECTIONS_KEY
ui.style STYLE_KEY
ui.theme THEME_KEY
user.timezone TIMEZONE_KEY
week.firstDay WEEK_FIRST_DAY_KEY
week.generateDay WEEK_GENERATE_DAY_KEY