DailyRoundup

Operations

Health Monitoring

The server exposes a GET /health endpoint that returns 200 OK when the service is running. Check it from the server or any machine with network access:

curl https://<your-server>/health

For account-scoped stats (number of synced lists and registered devices), use the authenticated status endpoint:

curl -H "Authorization: Bearer <auth-token>" https://<your-server>/dailyroundup/status

The healthcheck.py script in roundup-server/ performs a more thorough post-deployment check: it polls GET /health until the service responds, validates APNs JWT signing, and verifies Trello API connectivity for all configured accounts. It is run automatically by the Deploy code to sync server GitHub Actions workflow after each deployment.

Alerting

GitHub Actions sends a notification when the Deploy code to sync server or Upload to App Store Connect workflow fails. No automated alerting is configured for runtime server errors; monitor the service by watching logs (see Server Logs) or polling GET /health.

Common Issues

App shows “Authentication failed” after entering server URL

The auth token in Settings is invalid or missing. Tap Connect to Server… and enter your bootstrap token to create a new account. If you already have a permanent token, expand “I already have a token” and paste it directly.

Trello changes are not appearing in Reminders

  1. Verify the server is reachable: pull down on the task list to trigger a sync and check the sync status at the top.
  2. Confirm a Webhook Secret is configured in Settings → Trello Configuration. The server rejects all webhook events from accounts without one.
  3. Check the server logs for 403 responses or no trello_webhook_secret configured warnings.

Webhook events returning 403

The Webhook Secret in the iOS app does not match the value Trello is signing requests with. Update the Webhook Secret in Settings → Trello Configuration to match, then save.

APNs push notifications not delivering

Check that all four APNS_* environment variables are set in .env and the server has been restarted. The server logs a DEBUG message on startup if any are missing. Confirm APNS_USE_SANDBOX matches the build type (set to 1 for development builds, omit for App Store/TestFlight).

Sync stopped after moving to a new device

iCloud Keychain syncs the auth token automatically, but may take a few minutes. If the token does not appear, use “I already have a token” in Settings to paste it from your previous device.

Server Logs

The server logs to stdout/stderr, captured by systemd’s journal. Logs are written in this format:

2026-02-24T14:32:01 INFO [dailyroundup.webhook] Recorded 'create' change for Trello card abc123

Fields: YYYY-MM-DDTHH:MM:SS LEVEL [logger.name] message

Reading logs requires SSH access to the server and the journalctl tool (included with systemd). Replace <username> with the system user running the service:

# Stream live logs
journalctl -u dailyroundup@<username> -f

# Last 100 lines
journalctl -u dailyroundup@<username> -n 100

# Logs from the past hour
journalctl -u dailyroundup@<username> --since "1 hour ago"

# Errors only
journalctl -u dailyroundup@<username> -p err

# Save today's logs to a file
journalctl -u dailyroundup@<username> --since today > ~/dailyroundup-$(date +%F).log