Configuration - ryakel/boomerang GitHub Wiki
Configuration
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
PORT |
No | 3001 (prod) / 3002 (dev) |
Server port |
DB_PATH |
No | ./boomerang.db (local) or /data/boomerang.db (Docker) |
SQLite database file path |
ANTHROPIC_API_KEY |
No | — | Default Claude API key for AI features (users can override in UI) |
NOTION_INTEGRATION_TOKEN |
No | — | Default Notion integration token (users can override in UI) |
TRELLO_API_KEY |
No | — | Trello API key for card sync (users can override in UI) |
TRELLO_SECRET |
No | — | Trello API token for card sync — despite the name, this is the token from the authorize URL, NOT the "Secret" from the Trello admin page (users can override in UI) |
GOOGLE_CLIENT_ID |
No | — | Google OAuth Client ID for Calendar sync (users can add in UI) |
GOOGLE_CLIENT_SECRET |
No | — | Google OAuth Client Secret for Calendar sync (users can add in UI) |
TRACKING_API_KEY |
No | — | 17track API key for package tracking (users can add in UI). Free tier: 100 queries/day. Get key at api.17track.net |
APP_VERSION |
No | dev |
Version string injected at build time (used if git tags are unavailable) |
SEED_DB |
No | 0 |
Set to 1 to wipe and seed the database on startup with realistic test data. Uses Claude API if ANTHROPIC_API_KEY is set, otherwise falls back to static scripts/seed-data.json. Only exposed in docker-compose.dev.yml. |
None are required. The app starts and works fully without API keys. AI features (Polish, What Now, Reframe, date inference, size inference, smart nudges) are disabled without an Anthropic key. Notion features are disabled without a Notion token.
The server also reads from a .env file if present, supporting both ANTHROPIC_API_KEY and VITE_ANTHROPIC_API_KEY (legacy) formats.
API Key Priority
For each request, the server resolves keys in this order:
- User-provided key (sent via
x-anthropic-keyorx-notion-tokenrequest header from the UI) - Environment variable (
ANTHROPIC_API_KEYorNOTION_INTEGRATION_TOKEN)
If neither is set, AI and Notion API calls return a 400 with a descriptive error message. The rest of the app continues to function normally.
When an environment variable is set, the Settings UI shows a "Set by environment variable" status message instead of the input field, since the env var is already providing the key. This applies to Anthropic, Notion, and Trello credentials.
Settings (in-app)
All settings are accessible via the gear icon in the header:
API Keys
- Anthropic API key — for AI features. Stored in localStorage, sent as
x-anthropic-keyheader. Hidden when env var is set. - Notion integration token — for Notion features. Stored in localStorage, sent as
x-notion-tokenheader. Hidden when env var is set. - Trello API key + token — for Trello card sync. Stored in localStorage, sent as
x-trello-keyandx-trello-tokenheaders. Hidden when env vars are set. After entering credentials, click Connect to select a board and list. - Google Calendar Client ID + Secret — for Google Calendar sync. Stored in localStorage, sent as
x-google-client-idandx-google-client-secretheaders. Hidden when env vars are set. After entering credentials, click Connect to complete OAuth flow and select a calendar.
AI Custom Instructions
- Free-text field that shapes all AI output (Polish, What Now, Reframe, smart nudges)
- Import from
.mdor.txtfile - Export to
.mdfile - Clear button when instructions are set
Task Behavior
- Default due date — days from now for new tasks (default: 7, set to 0 to disable)
- Staleness threshold — days before a task is marked stale (default: 2, range: 1-30)
- Reframe trigger — snooze count before reframe is required instead of snooze (default: 3, range: 1-20)
Display
- Task count display — controls the header task count format:
- Open only — just the non-snoozed open count
- Active — fraction of non-snoozed open / (open + backlog)
- All — fraction of non-snoozed open / (open + done)
Labels
- Create custom labels with names and colors (10 color options)
- Delete existing labels
- Default labels: inside (blue), outside (green), follow-up (orange)
Notifications
- Enable/disable browser push notifications
- Check frequency: 15m, 30m, 1h, 2h (default: 30m)
- Toggles for: overdue tasks, stale tasks, general nudges
- Stale task percentage threshold — configurable percentage at which a warning notification fires
Data
- Export — download JSON backup of all tasks, routines, settings, and labels
- Import — upload a JSON backup to restore data
Activity Rings and Goals
- Daily task goal — number of tasks to complete per day for the Tasks ring (default: configurable)
- Daily points goal — point target per day for the Points ring (default: configurable)
- Vacation mode — freeze your streak with a duration picker (3, 5, 7 days, or custom). Auto-expires when the end date passes.
- Free day — pause streak for a single day without entering vacation mode
Danger Zone
- Clear completed tasks — removes all done tasks
- Reset streaks — clears all streak and analytics data (requires double confirmation)
- Clear all data — deletes all tasks, routines, settings, labels, and history (requires confirmation)