Internal
Public Access
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:
co-authored by
Claude Sonnet 5
parent
f92ce7a3d4
commit
6791f008e9
@@ -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:**
|
||||
|
||||
Reference in New Issue
Block a user