Notifications
TaskView notifies you when things happen in your projects. Notifications are delivered through multiple channels and can be customized per user.
Notification types
| Type | When it fires | Delivery | Status |
|---|---|---|---|
| Deadline | When a task deadline is reached | Scheduled via background job (pgboss). If the deadline is already past when set, fires immediately. | Available |
| Assignment | When you are assigned to a task | Immediate | Available |
| Mention | When someone mentions you | Immediate | Planned |
| Comment | When someone comments on your task | Immediate | Planned |
| Status change | When a task status changes | Immediate | Planned |
Delivery channels
Notifications can be sent through two channels (with email planned for the future):
| Channel | Description | Required configuration |
|---|---|---|
| Push | Native push notifications on iOS/Android via Firebase Cloud Messaging | FIREBASE_CREDENTIALS_PATH |
| In-app (WebSocket) | Real-time delivery to the browser via Centrifugo | CENTRIFUGO_API_URL, CENTRIFUGO_API_KEY, CENTRIFUGO_TOKEN_SECRET, CENTRIFUGO_PUBLIC_URL |
Both channels are optional. If Firebase is not configured, push notifications are silently skipped. If Centrifugo is not configured, in-app real-time delivery is skipped. Notifications are always saved to the database regardless of channel availability.
User preferences
Each user can control which notifications they receive and through which channels. Settings are available in Account Settings > Notification Settings.
Preferences follow an opt-out model: everything is enabled by default. Users explicitly disable what they do not want.
Global and per-project settings
Preferences support two levels:
- Global applies to all projects
- Project overrides apply to a specific project and are merged on top of global settings
For example, a user can enable push for all deadline notifications globally, but disable push for deadlines in a specific project.
Deadline intervals (planned)
The preferences structure supports the following intervals (minutes before the deadline):
| Interval | Description |
|---|---|
0 | At the moment of the deadline |
15 | 15 minutes before |
30 | 30 minutes before |
60 | 1 hour before |
1440 | 1 day before |
Each interval can be independently enabled or disabled.
How it works
- An event occurs (task created, deadline changed, assignees changed, etc.)
- NotificationDispatcher listens to the event bus and determines the notification type, recipients, and whether to send immediately or schedule a background job
- For deadlines, DeadlineScheduler creates a pgboss job that fires at the right time
- When it is time to deliver, NotificationService checks the user's preferences, saves the notification to the database, and sends it through enabled channels only
- Providers (FCMProvider, CentrifugoProvider) handle the actual delivery
Viewing notifications
Click the bell icon in the sidebar to open the notification panel. From there you can:
- See all your notifications with type icons and timestamps
- Click a notification to navigate to the related task
- Mark individual notifications as read
- Mark all notifications as read
- Load older notifications via pagination
Notifications older than 1 day are automatically cleaned up by a daily background job.
Configuration
See Environment Variables for the full list of notification-related variables.
API endpoints
| Method | Path | Description |
|---|---|---|
GET | /module/notifications | Fetch notifications (cursor pagination) |
PATCH | /module/notifications/read | Mark a notification as read |
PATCH | /module/notifications/read-all | Mark all notifications as read |
GET | /module/notifications/preferences | Get user notification preferences |
PUT | /module/notifications/preferences | Save user notification preferences |
GET | /module/notifications/connection-token | Get WebSocket connection token |
POST | /module/notifications/device/register | Register a device for push notifications |
POST | /module/notifications/device/unregister | Unregister a device |
Dashboard
TaskView dashboard - smart widgets for today's tasks, upcoming deadlines, recent activity, completed work, and daily planning overview across all your projects.
Webhooks
Configure webhooks in TaskView to receive real-time HTTP notifications when tasks are created, updated, deleted, or reassigned. Includes HMAC-SHA256 signature verification, automatic retries, and delivery history.
