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.

TaskView notifies you when things happen in your projects. Notifications are delivered through multiple channels and can be customized per user.

Notification types

TypeWhen it firesDeliveryStatus
DeadlineWhen a task deadline is reachedScheduled via background job (pgboss). If the deadline is already past when set, fires immediately.Available
AssignmentWhen you are assigned to a taskImmediateAvailable
MentionWhen someone mentions youImmediatePlanned
CommentWhen someone comments on your taskImmediatePlanned
Status changeWhen a task status changesImmediatePlanned

Delivery channels

Notifications can be sent through two channels (with email planned for the future):

ChannelDescriptionRequired configuration
PushNative push notifications on iOS/Android via Firebase Cloud MessagingFIREBASE_CREDENTIALS_PATH
In-app (WebSocket)Real-time delivery to the browser via CentrifugoCENTRIFUGO_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)

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):

IntervalDescription
0At the moment of the deadline
1515 minutes before
3030 minutes before
601 hour before
14401 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

MethodPathDescription
GET/module/notificationsFetch notifications (cursor pagination)
PATCH/module/notifications/readMark a notification as read
PATCH/module/notifications/read-allMark all notifications as read
GET/module/notifications/preferencesGet user notification preferences
PUT/module/notifications/preferencesSave user notification preferences
GET/module/notifications/connection-tokenGet WebSocket connection token
POST/module/notifications/device/registerRegister a device for push notifications
POST/module/notifications/device/unregisterUnregister a device

Built with Nuxt UI • © 2026 Thank you Nuxt Team for this awesome UI library and for the template!