Document reminders, offline PWA, and fix missing Celery Beat in deploy guide

API.md: document the reminder/due_soon/overdue notification schedule
(including the due_time-aware is_overdue fix and the 1-hour overdue
delay) and how default_reminder_minutes/reminder_at interact.

README.md: add Offline Support (PWA) and Notifications & Reminders to
the feature list - both were fully functional but never listed. Also
fixes a real gap in the manual systemd deployment guide: it only set
up the Celery worker, never Celery Beat, so the daily digest, recurring
task safety net, and now reminders would never fire for anyone
following that guide.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Keith Smith
2026-09-05 13:27:18 -06:00
co-authored by Claude Sonnet 5
parent f92ce7a3d4
commit 6791f008e9
2 changed files with 55 additions and 5 deletions
+9 -2
View File
@@ -433,7 +433,7 @@ Creates a new task.
| priority | enum | No | `low`, `medium`, `high`, `urgent` |
| due_date | date | No | YYYY-MM-DD |
| due_time | time | No | HH:MM:SS |
| reminder_at | datetime | No | ISO 8601 format |
| reminder_at | datetime | No | ISO 8601 format. Overrides the user's `default_reminder_minutes` for this task's "before due" reminder - see Notifications |
| recurrence | enum | No | `none`, `daily`, `weekly`, `biweekly`, `monthly`, `yearly`, `custom` |
| recurrence_rule | string | No | RRULE string for custom recurrence |
| recurrence_end_date | date | No | End date for recurring tasks |
@@ -469,7 +469,7 @@ Creates a new task.
**Notes:**
- When a recurring task is completed, the next instance is automatically created
- `completed_at` is automatically set when `status` changes to `completed`
- `is_overdue` is calculated based on user's timezone
- `is_overdue` is calculated in the user's timezone; if `due_time` is set, the task becomes overdue once that time passes on `due_date`, otherwise it becomes overdue starting the day after `due_date`
### Get Task Details
@@ -949,6 +949,13 @@ Returns notifications for current user.
- `shared` - Task/tag shared with user
- `daily_email` - Daily email digest sent
**Reminder scheduling:** For any task with `due_date` and `due_time` set, up to three notifications are sent automatically (delivered by email and/or push per the user's `email_notifications`/`push_notifications` settings):
- `reminder` - before due, at `reminder_at` if set on the task, otherwise `default_reminder_minutes` before the due moment
- `due_soon` - exactly at the due moment
- `overdue` - one hour after the due moment (kept separate from `due_soon` so they don't arrive together)
A task with `due_date` but no `due_time` only gets the `overdue` notification, fired at the start of the day after `due_date` (matching `is_overdue`'s day-after rule). Changing `default_reminder_minutes` retroactively reschedules the `reminder` notification on existing active tasks that don't have their own `reminder_at` override; it does not affect tasks whose `reminder_at` was explicitly set.
### Mark Notification as Read
**POST** `/api/notifications/{notification_id}/read/` (Authenticated)