Overview
Discover what makes Notifo powerful
Notifo is a self‑hosted, multi‑channel notification engine designed for developers who need fine‑grained control over how events are communicated to end users. At its core, Notifo consumes **topic‑based events** (e.g., `clothes/shoes/nike/<model>`) and matches them against user subscriptions that can target specific paths or ancestor paths. Once a match is found, the system queues notifications and delivers them through a configurable set of channels—email (Amazon SES), WebSocket, WebPush, mobile push (Firebase), and SMS (MessageBird). The architecture is intentionally decoupled: event ingestion, subscription evaluation, queueing, and channel delivery are separate services that communicate via message brokers, allowing horizontal scaling and fault isolation.
Rich REST API
Template engine
Channel abstraction layer
Retry & back‑off
Overview
Notifo is a self‑hosted, multi‑channel notification engine designed for developers who need fine‑grained control over how events are communicated to end users. At its core, Notifo consumes topic‑based events (e.g., clothes/shoes/nike/<model>) and matches them against user subscriptions that can target specific paths or ancestor paths. Once a match is found, the system queues notifications and delivers them through a configurable set of channels—email (Amazon SES), WebSocket, WebPush, mobile push (Firebase), and SMS (MessageBird). The architecture is intentionally decoupled: event ingestion, subscription evaluation, queueing, and channel delivery are separate services that communicate via message brokers, allowing horizontal scaling and fault isolation.
Key Features
- Rich REST API with OpenAPI documentation, exposing endpoints for event publishing, subscription management, template handling, and analytics.
- Template engine that supports MJML for responsive emails and Liquid templating for dynamic content generation.
- Channel abstraction layer: developers can plug in new providers or override defaults without touching the core logic.
- Retry & back‑off: every channel implements its own retry strategy, guaranteeing eventual delivery even under transient failures.
- Read/confirm tracking: notifications can be marked as
None,Explicit, orSeen. The engine respects these states to avoid redundant sends and supports delayed delivery.
Technical Stack
| Layer | Technology |
|---|---|
| Backend | Node.js (TypeScript) + NestJS framework |
| Database | PostgreSQL for persistence of users, subscriptions, templates, and audit logs |
| Message Broker | RabbitMQ or Azure Service Bus (configurable) for queues and schedulers |
| Frontend | React‑based management UI, served as a static bundle |
| Containerization | Docker images published on Docker Hub; fully orchestrated via Docker Compose or Kubernetes manifests |
The choice of NestJS provides a modular architecture with dependency injection, making it straightforward to swap out database drivers or message brokers. PostgreSQL’s JSONB columns are leveraged for flexible template storage, while RabbitMQ handles fan‑out patterns needed for multi‑channel dispatch.
Core Capabilities
- Event API:
POST /api/eventsaccepts a payload withtopic,data, and optional metadata. The service validates the topic against existing subscriptions. - Subscription API: CRUD endpoints for
GET /api/subscriptions, enabling users to subscribe/unsubscribe from arbitrary topic paths. - Template API: Manage email, web push, and mobile push templates; compile Liquid expressions server‑side.
- Webhooks: External services can register callbacks to receive real‑time delivery status updates or errors.
- SDKs: Client libraries (JavaScript, TypeScript) expose a thin wrapper around the REST API, simplifying integration into web or mobile apps.
Deployment & Infrastructure
Notifo ships as a set of Docker images that can be deployed on any container runtime. The docker-compose.yml provided in the repo demonstrates a single‑node setup, but the architecture scales horizontally:
- Stateless API services can be replicated behind a load balancer.
- RabbitMQ clusters provide message durability and high availability.
- PostgreSQL replicas handle read scaling for analytics dashboards.
Because the core services are stateless, Kubernetes deployments can use stateful sets for the database and RabbitMQ, while leveraging ConfigMaps/Secrets for environment configuration. The system also exposes a health‑check endpoint (/health) and metrics via Prometheus exporters, easing observability.
Integration & Extensibility
Notifo’s plugin system allows developers to add custom notification overlays or extend channel providers. A typical extension involves:
- Implementing a provider interface that conforms to the
IChannelcontract (send, schedule, cancel). - Registering the provider in the dependency injection container via a simple configuration flag.
- Publishing new events with metadata that triggers the custom provider.
Webhooks and SDKs provide tight integration points for third‑party services. For example, a SaaS platform can expose a POST /notifo/webhook endpoint that receives delivery confirmations and updates internal analytics.
Developer Experience
- Documentation: The GitHub repo hosts comprehensive README, API reference (OpenAPI spec), and a wiki with installation guides. Swagger UI is auto‑generated for interactive exploration.
- Community: Active GitHub issues, a Slack channel, and regular releases (as shown by the CI badge) indicate healthy maintenance.
- Configuration: Environment variables control every aspect—database URL, message broker host, provider credentials—making it easy to adapt to CI/CD pipelines or on‑premises setups.
Use Cases
| Scenario | How Notifo Helps |
|---|---|
| E‑commerce order updates | Subscribe users to orders/<userId>; send email on status change, push when shipped. |
| Project management | Projects expose project/<id> topics; tasks are sub‑topics. Users can opt for web or email only. |
| News & content | Authors publish to category/<topic>; subscribers receive real‑time web pushes. |
| IoT alerts | Devices emit device/<id>/alert; operators receive SMS or push notifications. |
In each case, developers can fine‑tune delivery delays, confirmation logic, and channel preferences directly through the API or UI.
Advantages
- Performance: Event matching is performed
Open SourceReady to get started?
Join the community and start self-hosting Notifo today
Related Apps in apis-services
Mastodon
Decentralized, real‑time social networking
Discourse
Open‑source community forum platform with real‑time chat and AI
Rocket.Chat
Secure, open‑source team communication platform
Novu
Unified notification platform for multi‑channel delivery
Mattermost
Secure, self‑hosted team collaboration with chat, voice, and AI
Jitsi Meet
Free, encrypted video conferencing for everyone
Weekly Views
Repository Health
Information
Explore More Apps
Wavelog
Self-hosted logbook for amateur radio enthusiasts
Openfire
Instant messaging server with XMPP protocol
OpenCanary
Low‑resource network honeypot that alerts on intrusions
MODX Revolution
Fast, secure, flexible open‑source CMS for any web project
Piwigo
Open‑source photo gallery for teams and individuals
WordPress
The world's most popular open‑source website builder
