DEV Community

Cover image for Building the first open-source notification infrastructure
Dima Grossman
Dima Grossman

Posted on • Updated on

Building the first open-source notification infrastructure

Hi Community!
Looking forward to hear your thoughts about this.

Novu was started out of pain me and @combarnea felt when developing products that required product based notifications. We've built the infrastructure so many times that we decided to take it out to the world. That's when Novu was born. We took the multi-channel notifications and provided a unified set of API's to generate notification content and simplify delivery across multiple channels.

It's more than just sending an email or push

(Part of slacks notification system)

From our past experience, we know that a wholesome notification infrastructure requires more than a unified API. We believe that building a solid notification infrastructure is something that is accessible not only to fortune 500 companies but to every developer out there.

Notificaiton infrastructure foundations

Smart Notification Engine

Using a stateful API instead of local config files can provide further functionality like:

  • Run time changes without redeploying your code.
  • Digest mechanism that allows to aggregate multiple events/messages to a single email or in-app notification for the customer. For example, a user received an email a minute ago, we don't want to send him the next one immediately and wait if further messages are planning to arrive.
  • User preferences - With the ever-growing number of channels, an end-user can get notifications can create a lot of noise. Notification preferences are an expected thing from most users this day. A stateful API can manage all the complexities of it out of the box.
  • Priority management - Not all notifications created equally, while password reset email must be delivered in real-time. Repeatable and frequent notifications can be throttled or scheduled to a later time.
  • Timezone awareness - Send a specific set of notifications only in the user wake hours.
  • Monitoring and webhook integrations to all the delivery providers.
  • Analyze sending patterns and debug deliverability across multiple channels

In-app notification center

  • An embeddable widget that is easy to integrate and customize.
  • Real-time update using a socket.
  • User preference widget to control the channels and motivation groups he would love to receive.
  • The ability of the user to Snooze, mute and hide notifications easily.

We would love that everyone can have the best notification infrastructure possible without investing thousands of hours on it again and again. By the community. For the community.

Next steps

We are working on porting parts of the closed source platform we developed over the years to OSS. This includes an out-of-the-box API for managing notifications, an embeddable notifications widget, activity monitoring and more.

Star or follow us on twitter to get notified when we release the first API version, embeddable widget and admin panel to the world.

Screen Shot 2021-10-28 at 14 53 57

What are your thoughts about the need for such a system? Have you built something similar with your team? What would expect to see there?

Feel free to comment here or at our Github page

Top comments (7)

lewiscowles1986 profile image
Lewis Cowles

Wow. Sounds incredibly involved. What are the motivations for sharing such detailed works for free

scopsy profile image
Dima Grossman

We've been working on parts of it over the years. But as people say, it takes a village :) We believe that only with the power of the community we can solve this once and for all.

davidskuza profile image
David Skuza • Edited

node... will it work in 10 years? what about support?

scopsy profile image
Dima Grossman

The library itself is in node.js. But we are currently the API that can be communicated with a thin layer http sdk. So it can be used from different languages as well.

stefanoschrs profile image
Stefanos Chrs

Hey, what's your timeline on the web notifications? I'm looking for something like the last image you've attached. How are you going to solve it? Because it will require a websocket server and persistent storage.

scopsy profile image
Dima Grossman

I believe in the next 2 weeks it will be out including the web server. We are going to provide a docker compose with the relevant servers including websocket. You can join us on discord or follow the project on GitHub

itsamitperez profile image
Amit Perez

What an effort⚡️
Thanks guys.