Sentioo: a notification client for web app

In Technical by Matteo Piazza

Recently we open sourced on GitHub sentioo, a configurable notification system for web applications, born from the bachelor thesis of a collaborator.

The key technology here is server-sent events.

What are server-sent events?

Server-sent events (SSE) is a technology enabling a browser to receive automatic updates from a server via HTTP connection.
Traditionally, a web page has to send a request to the server to receive new data; that is, the page requests data from the server.
On the contrary, with server-sent events, it’s possible for a server to send new data to a web page at any time, by pushing messages to the web page. These incoming messages can be treated as Events + data inside the web page (see Server-sent events documentation).

Server-sent events avoid you to use alternative non-fitting technologies, for simplicity or perfomance efficiency reasons. Maybe you do not need the bilateral communication protocol given by a websocket; and you already know you need something better than HTTP polling.

So, if for any case, you have got data on your backend that changes, and want to visually notify the user of the change, chances are you can consider our library as a viable solution.

Sentioo

As often happens in informatics, sentioo is the awkward name chosen after obscure and unintelligible developers’ brainstormings.
Nomina sunt substantia rerum: its name reminds the fact our library “sent you” something to notify the user of, showing a nice coloured badge overlying a little bells. Click the bell, and a list of read and unread notifications appears as a dropdown.

Through the given API, you can mark a given message as read, or delete it from queue (and you also get bulk actions).

Sentioo works as the client for server events (you can write the server as you like, for instance we used java). Its written as a frontend module for a Vue web application, but, given the fact it is an isolated and self-sufficient module, writing a simple Vue wrapper allows you to include it in any javascript application (for instance, we used it also inside an Angular codebase).

License and installation

Sentioo is release under the Apache License, Version 2.0.

Refer to the Sentioo public repository on GitHub for further details, technical specification, configuration, and theme customization. 

It is also available as an NPM package.