Skip to main content
MUZE notifies users through two channels: in-app notifications and email. A WHATSAPP channel value exists in the schema but is reserved for future use. Notification dispatch runs in the background and never blocks or fails the primary operation — the order or status transition response returns as soon as the database transaction commits, while notifications and emails (including Sales Order PDF generation) are dispatched out-of-band.

In-app notifications

In-app notifications are database records (Notification model) rendered by the notification bell in the navigation bar. The bell:
  • Polls for unread notifications every 30 seconds
  • Shows the unread count as a badge
  • Pauses polling when the browser tab is hidden
The Notifications page lets users filter by read/unread, mark all as read, and delete notifications.

Email notifications

Transactional emails are sent via Brevo in production (HTTPS REST API) and nodemailer SMTP (e.g. Gmail) in development. Every attempt is recorded in the EmailLog table with status and error details.

Notification service

File: backend/src/notifications/notifications.service.ts

Resilience

  • Send failures are logged in EmailLog but never block the order transition
  • No retry queue for failed emails
  • No delivery-status webhooks
  • When orders are deleted, related notifications are cleaned up in the same transaction