Stone.js API
    Preparing search index...
    notificationsBlueprint: NotificationsBlueprint = ...

    Opt-in blueprint: register it to reach people.

    The imperative half of the pair; @Notifications() is the declarative one. It binds the notifier and the channels, and contributes the delivery job so a worker performs what a request decided.

    The job is declared on stone.queue.handlers, the array the worker scans, so nothing here depends on the queue package. An application with no queue simply never has a worker to read it, and delivery happens in the request instead.

    import { defineConfig, defineStoneApp } from '@stone-js/core'
    import { notificationsBlueprint } from '@stone-js/notifications'

    export const App = defineStoneApp({ name: 'app' }, [notificationsBlueprint])

    export const AppConfig = defineConfig((blueprint) => blueprint.set('stone.notifications', {
    default: ['smtp', 'in-app'],
    channels: [{ name: 'smtp', driver: 'smtp', from: 'Noowow <no-reply@example.test>' }],
    recipients: async (id) => await accounts.contactFor(id)
    }))