backstage
notifications
Welcome to the notifications backend plugin!
Getting started
Add the notifications to your backend:
const backend = createBackend();// ...backend.add(import('@backstage/plugin-notifications-backend'));
For users to be able to see notifications in real-time, you have to install also
the signals plugin (@backstage/plugin-signals-node
, @backstage/plugin-signals-backend
, and
@backstage/plugin-signals
).
Extending Notifications
The notifications can be extended with NotificationProcessor
. These processors allow to decorate notifications
before they are sent or/and send the notifications to external services.
Start off by creating a notification processor:
import { Notification } from '@backstage/plugin-notifications-common';import { NotificationProcessor } from '@backstage/plugin-notifications-node';
class MyNotificationProcessor implements NotificationProcessor { async decorate(notification: Notification): Promise<Notification> { if (notification.origin === 'plugin-my-plugin') { notification.payload.icon = 'my-icon'; } return notification; }
async send(notification: Notification): Promise<void> { nodemailer.sendEmail({ from: 'backstage', to: 'user', subject: notification.payload.title, text: notification.payload.description, }); }}
Both of the processing functions are optional, and you can implement only one of them.
Add the notification processor to the notification system by:
import { notificationsProcessingExtensionPoint } from '@backstage/plugin-notifications-node';import { Notification } from '@backstage/plugin-notifications-common';
export const myPlugin = createBackendPlugin({ pluginId: 'myPlugin', register(env) { env.registerInit({ deps: { notifications: notificationsProcessingExtensionPoint, // ... }, async init({ notifications }) { // ... notifications.addProcessor(new MyNotificationProcessor()); }, }); },});
Sending notifications
To be able to send notifications to users, you have to integrate the @backstage/plugin-notifications-node
to your application and plugins.