Novu is an open-source notification infrastructure designed for developers and product teams who need to deliver multi-channel notifications—In-App, Email, SMS, Push, and Chat—without building custom infrastructure. It solves the complexity of managing disparate notification providers by offering a unified API, real-time inbox component, and workflow engine. Built with TypeScript and Node.js, Novu supports React, Next.js, and Remix out of the box, with Vue and Angular coming soon. It can be self-hosted or used via cloud, with EU data residency support and an open-core model (MIT-licensed core, enterprise features in /enterprise).
What You Get
- Embeddable Inbox Component - A real-time, customizable notification center that can be added to web apps with 6 lines of code using @novu/nextjs or @novu/react, featuring archiving, unread/read filtering, and search.
- Multi-Channel Notification API - Single API to send notifications across Email, SMS, Push, Chat, and In-App channels without managing separate provider SDKs.
- Digest Engine - Combines multiple notifications into a single consolidated email or SMS message to reduce user fatigue and improve engagement.
- No-Code Block Editor for Emails - Visual, React-based email editor (powered by React Email) to design dynamic, responsive emails without writing HTML tables or raw templates.
- User Preferences Component - Embeddable UI that lets users control notification frequency, channels, and snooze preferences directly within the app.
- Workflow Orchestration Engine - Define multi-step notification workflows with conditions, delays, and channel-specific logic using the @novu/framework API.
- Provider Integrations - Pre-built connectors for 15+ email providers (SendGrid, Mailgun, SES, Resend), 14+ SMS providers (Twilio, Plivo, Telnyx), 5+ push providers (FCM, APNS, OneSignal), and 4 chat platforms (Slack, Discord, MS Teams, Mattermost).
- Real-Time Delivery - Instant in-app notifications with WebSocket-based updates, requiring zero setup beyond embedding the component.
Common Use Cases
- Building a SaaS notification center - A product team uses Novu to embed a real-time inbox in their dashboard, replacing custom-built UIs and integrating with Stripe and Clerk for user context.
- Sending transactional emails at scale - An e-commerce startup uses Novu’s block editor and Resend/SES providers to send order confirmations, password resets, and promotional digests without managing SMTP servers.
- Delivering SMS alerts for authentication - A fintech app uses Twilio and Plivo via Novu to send OTPs and fraud alerts, ensuring delivery even when users are offline.
- Managing cross-channel user engagement - A SaaS platform uses Novu’s workflow engine to send Slack alerts for team activity, email digests for weekly reports, and push notifications for urgent security events—all from one trigger.
Under The Hood
Architecture
- Monorepo structured with Nx to enforce clear domain boundaries between applications (API, dashboard, worker) and shared packages, ensuring isolated build targets and controlled dependencies
- CQRS pattern implemented with distinct command and query handlers, decoupled from domain models and persisted via Prisma ORM for clean read/write separation
- Dependency injection managed through NestJS service containers, with providers registered via decorators and injected across controllers and background workers
- Shared domain logic encapsulated in typed interfaces within shared and framework packages, enabling consistent event schemas and notification models across frontend and backend
- Event-driven communication via message queues and publish-subscribe patterns, decoupling HTTP APIs from worker and webhook processing layers
- Strict module boundaries enforced through import rules that restrict access to package entry points only, preventing internal leakage and promoting clean APIs
Tech Stack
- Node.js backend powered by NestJS with Express and Kysely for database queries, using PostgreSQL and MySQL via Prisma ORM
- Monorepo managed by Nx with pnpm, supporting isolated applications and reusable shared libraries across services
- Next.js frontend with React and Svelte for component rendering, optimized via Vite for fast development and production builds
- Comprehensive testing stack including Jest, Vitest, and Cypress/Playwright for unit, integration, and end-to-end coverage
- Infrastructure-as-code using Docker and environment-specific configurations, with automated CI/CD pipelines for deployment
- Unified code quality enforced through Biome for linting, formatting, and import validation, alongside ESLint-like rules
Code Quality
- Extensive test coverage across unit, integration, and end-to-end layers with robust mocking for external services and business logic
- Clear separation of concerns through modular package structure, promoting reusability and maintainability of application logic and UI components
- Strong type safety enforced with TypeScript, using precise interfaces and type guards to minimize runtime errors and enhance developer experience
- Consistent naming conventions and standardized error handling aligned with NestJS patterns for predictable API behavior
- Comprehensive end-to-end testing using reusable page object models to ensure UI workflows remain maintainable and readable
- Robust provider testing with HTTP mocking and assertion-driven validation to guarantee reliability of external service integrations
What Makes It Unique
- Native AI-powered layout suggestions in the UI enable natural language generation and refinement of notification templates, reducing manual HTML/CSS authoring
- Unified event-driven architecture enables real-time, bidirectional synchronization of template changes across API, dashboard, and backend services without page reloads
- Dynamic layout engine with extensible control values supports visual editing of notifications while preserving semantic structure for email, SMS, and push channels
- Built-in multi-tenant versioning and rollback system with granular permissions for enterprise teams managing large-scale notification templates
- Seamless OpenAPI-driven SDK generation with automatic async iterator support for paginated endpoints, eliminating manual pagination logic
- Deep integration of translation management directly into the visual editor, enabling real-time localization without separate i18n workflows