Run It Day to Day¶
The Admin panel is the control surface for service-wide settings. Use it for routine health checks, user management, SimpleFIN availability, SMTP reminders, backup handling, cleanup, and authentication changes.
This page is the operator's playbook: what to check every day, how to operate the backup and restore lifecycle, how cleanup and notifications work, and how to change authentication without locking yourself out.
What do I check every day?¶
- Open Admin > System Status.
- Confirm database status is connected.
- Confirm the daily worker has no error.
- Review SimpleFIN source, account, transaction, last-sync, and error values.
- Review recent application errors.
- Confirm the most recent backup timestamp is reasonable for your policy.
What does the System Status page show?¶
The admin-only Status page aggregates:
| Area | Signals |
|---|---|
| Application | Version, environment, uptime |
| Runtime | Node.js version, platform, architecture, memory |
| Database | Connection state, size, modification time |
| Statistics | Users, active sessions, active bills, payments |
| Tracker | Current-month bills, payments, overdue count, skipped count |
| Daily worker | Enabled, running, last run, next run, last error |
| Notifications | Enabled, SMTP configured, last test, last send, last error |
| Backups | Count, latest backup, schedule, retention, last error |
| SimpleFIN | Enabled, sources, accounts, transactions, interval, next run, last error |
| Cleanup | Last run and task summary |
| Updates | Current and latest known versions |
| Recent errors | Up to 10 runtime error records |
The status endpoint intentionally omits filesystem paths and secrets.
How do I back up, restore, and import backups?¶
Manual Backup¶
Use Create Backup before upgrades, authentication changes, migrations, or high-risk imports.
The service:
- Checkpoints SQLite WAL.
- Writes a
.partialdatabase copy. - Runs SQLite
integrity_check. - Renames the validated file atomically.
- Sets file mode
0600. - Calculates a SHA-256 checksum.
- Applies retention.
Restore¶
Before restoring a selected backup, BillTracker:
- Validates the selected SQLite file.
- Creates a
pre-restorebackup of the current live database. - Copies and validates a temporary restore file.
- Closes the live SQLite handle.
- Replaces the live database.
- Removes stale WAL and SHM sidecars.
- Reopens the database.
The response includes the source backup and pre-restore backup identifiers.
Import Backup¶
Admin backup import accepts up to 100 MB of SQLite data. A caller may supply a
SHA-256 checksum. Imported files are validated before they join the managed
backup list.
Scheduled Backup¶
Scheduled backups are disabled by default.
| Setting | Allowed values |
|---|---|
| Frequency | daily, weekly |
| Time | Valid 24-hour HH:MM |
| Retention count | 1-365 |
Weekly schedules run on Sunday.
How do I clean up stale data?¶
Cleanup runs from the daily worker and can also run immediately from Admin.
| Task | Default | Behavior |
|---|---|---|
| Expired import previews | Enabled | Deletes expired import_sessions |
| Temporary SQLite exports | Enabled | Removes stale bill-tracker-user-*.sqlite temp files |
| Partial backup files | Enabled | Removes stale .partial and .upload files older than 2 hours |
| Import history | Disabled | Optionally removes old import_history rows |
| Soft-deleted financial records | Always | Permanently removes bills and categories after 30 days |
Temporary export age is configurable from 1-72 hours. Import history age is
configurable from 30-3650 days.
How do I configure notifications?¶
SMTP reminders are configured in Admin. BillTracker supports:
- SMTP host and port
- STARTTLS, SSL, or no TLS
- Optional username and password
- Optional self-signed certificate allowance
- Sender name and address
- A global recipient or per-user notification preferences
The daily worker evaluates unpaid active bills and sends reminders:
- 3 days before due date
- 1 day before due date
- Due date
- Overdue
Notification deduplication prevents sending the same bill, user, type, and date combination repeatedly.
How do I configure bank sync?¶
Admins can:
- Enable or disable bank sync
- Set sync interval from
0.5-168hours - Set requested lookback from
1-90days
Database-backed Admin settings take precedence over environment fallbacks.
How do I avoid locking myself out when changing authentication?¶
Keep local login enabled while onboarding OIDC. The server rejects configurations that disable all methods, enable incomplete OIDC, or remove local login without a configured OIDC admin group.
Use Authentication and Authentik / OIDC before changing production login behavior.