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 |