Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/notifo-io/notifo
Multi channel notification service for collaboration tools, e-commerce, news service and more.
https://github.com/notifo-io/notifo
asp-net bootstrap email email-marketing mjml-template mobile-push notifications react sms-messages sockets web web-push
Last synced: 2 months ago
JSON representation
Multi channel notification service for collaboration tools, e-commerce, news service and more.
- Host: GitHub
- URL: https://github.com/notifo-io/notifo
- Owner: notifo-io
- License: mit
- Created: 2020-12-21T15:17:39.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-04-11T17:05:20.000Z (10 months ago)
- Last Synced: 2024-04-13T15:34:03.668Z (9 months ago)
- Topics: asp-net, bootstrap, email, email-marketing, mjml-template, mobile-push, notifications, react, sms-messages, sockets, web, web-push
- Language: C#
- Homepage:
- Size: 24.3 MB
- Stars: 739
- Watchers: 13
- Forks: 68
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Notifo - Notification Service
[![Release](https://github.com/notifo-io/notifo/actions/workflows/release.yml/badge.svg)](https://github.com/notifo-io/notifo/actions/workflows/release.yml)
[![Docker Image Version (latest by date)](https://img.shields.io/docker/v/squidex/notifo?sort=date)](https://hub.docker.com/r/squidex/notifo)Try it out at https://app.notifo.io!
Notifo is a multi-channel notification service for collaboration tools, e-commerce, news, magazines and everybody who wants to notify their users.
![Notifo Tour](https://github.com/notifo-io/notifo/raw/main/media/tour/Notifo.gif "Notifo Tour")
## Features
* Powerful and rich REST API with OpenAPI documentation.
* Management UI to create notification templates, users, subscription, projects, settings and email templates.
* Email templates with MJML and Liquid Templates.
* Rich notification with a lot of formatting options like small and large images.
* Abstraction over multiple channels and providers
* Emails (currently Amazon SES)
* Web (Sockets)
* WebPush (custom built)
* MobilePush (currently Google Firebase)
* SMS (currently MessageBird)
* Reliable through retry mechanisms and message queues for all notifications and channels.
* Tracking which notification has been read or confirmed.
* Integrated plugin to add a notification overlay to your web application.## Integrations
![Integrations](https://github.com/notifo-io/notifo/raw/main/media/Integrations.png "Integrations")
## How it works
* **Users** subscribe to topics that are defined by a path such as `clothes/shoes/nike`. It is your job to provide a good UI for that.
* **Backend** creates events using very specific topic paths, such as `clothes/shoes/nike/`.
* **Notifo** creates user events based on the matching subscriptions. Subscriptions are either for specific paths or parent paths as in the example above and having individual notification preferences.
* **Queues** and schedulers are responsible to send notifications to users when the notification has not been confirmed yet.This allows a wide range of scenarios:
* In a task management system you can automatically subscribe users to a project, e.g. `project/123` and use a notification preference to only send web notifiations or web push notifications. When a user manually subscribes to a specific task, e.g. `project/123/tasks/abc` you can create this subscription with a preference to send out emails as well.* Notifications can have a confirmation preference (None, Explicit, Seen). Only unconfirmed notifications are sent through a channel and you can configure a delay when sending notifications. This means that a user does not receive a confirmation when he or she has already explicitly confirmed it (**Explicit** Mode) or has seen it (**Seen** mode). This avoids to spam your users which notifications he does not need anymore and you can also track who has seen or confirmed urgent and important notifications.
Have a look to the [presentation](https://github.com/notifo-io/notifo/raw/main/media/notifo!.pdf) to understand how it works.
## How to run it
Before you install it, try it out at https://app.notifo.io
### Install it using the docker image
docker images are available: https://hub.docker.com/r/squidex/notifo, you can try the [docker-compose](deployment/docker-compose/docker-compose.yml) file.
Read more about the installation in the [wiki](https://github.com/notifo-io/notifo/wiki/Installation).
### How to configure it
Have a look to the settings for all configuration options: [appsettings.json](https://github.com/notifo-io/notifo/blob/main/backend/src/Notifo/appsettings.json). Everything in the settings can be configured using environment variables.
The following setting
```json
"mongoDB": {
"connectionString": "mongodb://localhost",
},
```is mapped to the enviornment variable `MONGODB__CONNECTIONSTRING` (note the double underscore).
Read more about configuration in the [wiki](https://github.com/notifo-io/notifo/wiki/configuration).
## Tech Stack
Notifo uses the following technologies.
### Server
* ASP.NET Core 6 for Multi-Platform Support
* SignalR for Sockets
* MongoDB (support for more Databases is planned)
* OpenID Connect### Frontend
* React
* React Router
* Formik
* Redux
* Redux Toolkit
* Typescript
* Bootstrap with custom Sass and [Argon Design](https://www.creative-tim.com/product/argon-design-system) Theme.
* ...many more libraries.## Where is it used?
It was originally developed for Squidex Headless CMS (https://squidex.io), it is also used in a few other commercial applications in a testing stage.
Currently it is still in Beta and some features such as Mobile Push and Emails are not used in production yet.
## How to contribute?
There is still a lot to do:
* Support for other databases (I would prefer https://github.com/sebastienros/yessql)
* Other Email providers.
* Other SMS providers.
* Test application for mobile push (iOS and Android)
* Hardening scheduling and message queues.
* More channels (e.g. WhatsApp or Voice).
* Testing and tests
* Automated API and UI tests and more tests in general.## Sponsors
Notifo is sponsored and used by the following companies.
[![Squidex](media/logos/squidex.png)](https://squidex.io/) [![Squidex](media/logos/easierlife.png)](https://easierlife.de/)