Tesserae
e‑ink 디스플레이용 무료 오픈소스 대시보드 서버, 브라우저에서 대시보드 구성·프레임 렌더링·MQTT·REST 전송, 자체 호스팅·추적 없음
NestJS용 Laravel 스타일 알림
Laravel-style notifications for NestJS — define a notification once and deliver it across many channels (mail, database, Slack) and real-time transports (SSE, WebSocket), synchronously or queued.
개발 도구TypeScript · MDXGitHub @DavideCarvalho온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Laravel-style notifications for NestJS — one notification, many channels (mail, database, broadcast, Slack), sync or queued.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Laravel-style notifications for NestJS. Define a notification once and send it across many channels — mail, database, broadcast, Slack — synchronously or through a pluggable async dispatcher (in-process events, Redis, or your app's existing BullMQ setup).
📚 Documentation: https://davidecarvalho.github.io/nestjs-notifications/
class InvoicePaid implements Notification, MailNotification, DatabaseNotification {
constructor(private invoice: Invoice) {}
via() { return ['mail', 'database']; }
toMail() { return new MailMessage().subject('Paid!').line('Thanks for your payment.'); }
toDatabase() { return { invoiceId: this.invoice.id }; }
}
await notifications.send(user, new InvoicePaid(invoice));
send, via, toMail, on-demand routing, queued notifications.toMail/toDatabase/toSlack are checked at compile time.| Package | What it does |
|---|---|
@dudousxd/nestjs-notifications-core | Abstractions, NotificationService, synchronous dispatcher, events; /outbox transactional dispatch on @nestjs/outbox, /i18n translator on @nestjs/i18n |
@dudousxd/nestjs-notifications-mail | Mail channel on @nestjs/mail — fluent MailMessage; Default/Markdown/React-Email/MJML renderers; per-tenant transport routing |
@dudousxd/nestjs-notifications-database | Database channel — NotificationStore + in-memory store |
@dudousxd/nestjs-notifications-database-typeorm | TypeORM adapter for the database channel |
@dudousxd/nestjs-notifications-database-mikro-orm | MikroORM adapter for the database channel |
@dudousxd/nestjs-notifications-database-prisma | Prisma adapter for the database channel |
@dudousxd/nestjs-notifications-database-drizzle | Drizzle ORM (Postgres) adapter for the database channel + digest store (@nestjs/drizzle connections) |
@dudousxd/nestjs-notifications-broadcast | WebSocket (socket.io) channel for realtime in-app notifications |
@dudousxd/nestjs-notifications-sse | Server-Sent Events channel for live in-app updates |
@dudousxd/nestjs-notifications-push | Push channel — Web Push, FCM, Expo, APNs |
@dudousxd/nestjs-notifications-sms | SMS channel — Twilio, Vonage, AWS SNS |
@dudousxd/nestjs-notifications-slack | Slack channel — webhook or bot token |
@dudousxd/nestjs-notifications-discord | Discord channel — webhook |
@dudousxd/nestjs-notifications-telegram | Telegram channel — Bot API |
@dudousxd/nestjs-notifications-teams | Microsoft Teams channel — incoming webhook |
@dudousxd/nestjs-notifications-webhook | Webhook channel on @nestjs/webhooks — signed POSTs (sha256 or Standard Webhooks) or subscription fan-out |
@dudousxd/nestjs-notifications-preferences | Channel opt-out + full preference center (category × channel × digest) |
@dudousxd/nestjs-notifications-delivery-tracking | Persisted per-channel delivery status + Twilio/SES inbound status webhooks; /mail records @nestjs/mail events |
@dudousxd/nestjs-notifications-resilience | Provider failover on @nestjs/resilience circuit breakers + timeouts |
@dudousxd/nestjs-notifications-client | Framework-neutral headless SDK — fetch client + SSE subscribe + TanStack Query factories |
@dudousxd/nestjs-notifications-react | Drop-in <Inbox/> widget + useNotifications / useUnreadCount hooks |
@dudousxd/nestjs-notifications-event-emitter | In-process async dispatch via @nestjs/event-emitter |
@dudousxd/nestjs-notifications-bullmq | Async dispatch reusing your app's BullMQ |
@dudousxd/nestjs-notifications-redis | Async dispatch via Redis for a dedicated worker |
@dudousxd/nestjs-notifications-telescope | nestjs-telescope watcher — see every send in the dashboard |
@dudousxd/nestjs-notifications-testing | NotificationFake + Laravel-style assertions |
pnpm add @dudousxd/nestjs-notifications-core @dudousxd/nestjs-notifications-mail @nestjs/mail @nestjs/event-emitter
Where NestJS ships a first-party package (mail, webhooks, outbox, i18n, Drizzle, resilience), Aviary builds on it. Upgrading from an earlier 0.x? See the migration guide.
@Module({
imports: [
EventEmitterModule.forRoot(),
NotificationsModule.forRoot({ notifications: [InvoicePaid] }),
MailModule.forRoot({
transport: new SmtpTransport({ host: 'smtp.example.com', port: 587, auth: { user, pass } }),
from: '[email protected]',
}),
MailChannelModule.forRoot(),
DatabaseChannelModule.forRoot(), // in-memory; pair with an ORM adapter for persistence
],
})
export class AppModule {}
@Injectable()
class BillingService {
constructor(private readonly notifications: NotificationService) {}
async paid(user: User, invoice: Invoice) {
await this.notifications.send(user, new InvoicePaid(invoice));
// on-demand, no Notifiable entity:
await this.notifications.route('mail', '[email protected]').notify(new InvoicePaid(invoice));
}
}
A recipient implements Notifiable:
class User implements Notifiable {
constructor(public id: number, public email: string) {}
routeNotificationFor(channel: string) {
return channel === 'mail' ? this.email : undefined;
}
toNotifiableRef() { return { type: 'User', id: this.id }; } // needed for async dispatch
}
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗