Files
taskview-community/docs/2.features/6.notifications.md
T
2026-03-22 23:29:56 +01:00

4.7 KiB

title, description, navigation
title description navigation
Notifications Real-time and push notifications in TaskView - deadline alerts, assignment notifications, per-user preferences, and multi-channel delivery via WebSocket and Firebase Cloud Messaging.
icon
i-lucide-bell

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)

::callout{icon="i-lucide-construction" color="warning"} Deadline intervals are defined in the preferences structure but not yet active. Currently, deadline notifications fire once at the moment of the deadline. Multiple interval support is planned for a future release. ::

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

  1. An event occurs (task created, deadline changed, assignees changed, etc.)
  2. NotificationDispatcher listens to the event bus and determines the notification type, recipients, and whether to send immediately or schedule a background job
  3. For deadlines, DeadlineScheduler creates a pgboss job that fires at the right time
  4. 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
  5. 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