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
+46 -3
View File
@@ -43,6 +43,16 @@ A powerful Django-based task management system with time tracking, tag organizat
- **Real-time Updates**: Task changes sync across devices
- **Conflict Resolution**: Handles offline changes and syncing
### Offline Support (PWA)
- **Installable Web App**: Add to home screen with an offline-capable service worker
- **Full Offline Task Management**: Create, edit, complete tasks, manage subtasks and tags, and track time while offline
- **Automatic Sync**: Offline changes queue locally and sync automatically once back online
### Notifications & Reminders
- **Daily Digest**: Morning email summarizing tasks due today and overdue tasks
- **Per-Task Reminders**: Automatic "before due", "due now", and "overdue" notifications, timed per task
- **Multi-Channel Delivery**: Email, push, or both, per user
## Tech Stack
- **Backend**: Django 5.x, Django REST Framework
@@ -830,7 +840,9 @@ sudo systemctl start keepitgoing
sudo systemctl status keepitgoing
```
#### Step 6: Celery Service (Optional, for background tasks)
#### Step 6: Celery Services (Worker + Beat)
Both services are required - the worker executes tasks, Beat is the scheduler that queues the daily digest, recurring task safety net, and per-task reminders on their configured schedules (see `config/celery.py`).
```bash
sudo nano /etc/systemd/system/keepitgoing-celery.service
@@ -861,6 +873,37 @@ sudo systemctl enable keepitgoing-celery
sudo systemctl start keepitgoing-celery
```
Beat runs as its own separate service:
```bash
sudo nano /etc/systemd/system/keepitgoing-celerybeat.service
```
```ini
[Unit]
Description=KeepItGoing Celery Beat
After=network.target redis.service
[Service]
Type=simple
User=keepitgoing
Group=keepitgoing
WorkingDirectory=/home/keepitgoing/KeepItGoingServer
Environment="PATH=/home/keepitgoing/KeepItGoingServer/venv/bin"
Environment="DJANGO_SETTINGS_MODULE=config.settings.production"
EnvironmentFile=/home/keepitgoing/KeepItGoingServer/.env
ExecStart=/home/keepitgoing/KeepItGoingServer/venv/bin/celery -A config beat -l info
[Install]
WantedBy=multi-user.target
```
Enable and start:
```bash
sudo systemctl enable keepitgoing-celerybeat
sudo systemctl start keepitgoing-celerybeat
```
#### Step 7: Nginx Configuration
```bash
@@ -1016,8 +1059,8 @@ Complete this checklist before going live:
**Services:**
- [ ] Set up Gunicorn systemd service
- [ ] Configure nginx as reverse proxy
- [ ] Set up Redis for Celery (if using background tasks)
- [ ] Configure Celery systemd service (if needed)
- [ ] Set up Redis for Celery (required for the daily digest, recurring tasks, and reminders)
- [ ] Configure both the Celery worker and Celery Beat systemd services - Beat is what fires scheduled tasks, the worker alone won't
- [ ] Verify all services start on boot
**Monitoring & Logging:**