Skip to content

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?

  1. Open Admin > System Status.
  2. Confirm database status is connected.
  3. Confirm the daily worker has no error.
  4. Review SimpleFIN source, account, transaction, last-sync, and error values.
  5. Review recent application errors.
  6. 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:

  1. Checkpoints SQLite WAL.
  2. Writes a .partial database copy.
  3. Runs SQLite integrity_check.
  4. Renames the validated file atomically.
  5. Sets file mode 0600.
  6. Calculates a SHA-256 checksum.
  7. Applies retention.

Restore

Before restoring a selected backup, BillTracker:

  1. Validates the selected SQLite file.
  2. Creates a pre-restore backup of the current live database.
  3. Copies and validates a temporary restore file.
  4. Closes the live SQLite handle.
  5. Replaces the live database.
  6. Removes stale WAL and SHM sidecars.
  7. 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-168 hours
  • Set requested lookback from 1-90 days

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.