Show HN: Apprise v1.0.0 – A lightweight all-in-one notification solution

github.com

18 points by l2g 2 years ago

I introduced Hacker News to Apprise back when it was just an experiment (and supported just 30 or so notification services at the time). Now supporting more then 85+ services and with a ton of built in features, I officially created it's first stable v1.0.0 release marking a major milestone for the project.

Apprise doesn't compete with other notification services out there; instead it just acts as a proxy (or master switchboard) to support handling messages to them. It's a means of decoupling notification support from the systems that want to provide them. The idea is to adopt Apprise into your environment, and then you no longer have to worry about adding/removing support for new services as the come along and deprecating the ones that go away.

The way it works is that every service out there maps to a `schema://credentials/?optional_configuration`. You just need to define the schemas you use, and then you can already use Apprise. Check out the list of the services available today here: https://github.com/caronc/apprise#supported-notifications

Apprise is 100% open source (MIT Licensed). It has an acompanied API I built for those who want to centralize their configuration (found here: https://github.com/caronc/apprise-api).

Some reasons you may also all find it useful:

  - It works perfectly with legacy servers (supporting even Python 2.7).  So this fits system admins using older systems such as CentOS 6+
  - It has a complete API that developers, devops, and administrators alike can leverage allowing them to control the notifications in their environments.
  - It supports configuration files allowing you to securely hide your credentials and map them to simple tags like `family`, `devops`, `marketing`, etc. There is no limit to the number of tag assignments. It supports a simple TEXT (https://github.com/caronc/apprise/wiki/config_text) based configuration, as well as a more advanced and configurable YAML (https://github.com/caronc/apprise/wiki/config_yaml) based one.
  - It sends all notifications asynchronously optimizing setups where there are many end-points to deliver to.
  - It supports inputs are of MARKDOWN, HTML, and TEXT and can easily convert between these depending on the endpoint. For example: HTML provided input would be converted to TEXT before passing it along as a text message. However the same HTML content provided would not be converted if the endpoint accepted it as such (such as Telegram, or Email). 
  - It supports breaking large messages into smaller ones to fit the upstream service. Hence a text message (160 characters) or a Tweet (280 characters) would be constructed for you if the notification you sent was larger.
  - It supports file attachments too. So feel free to pass along an image, PDF, etc if the destination supports it.
  - It can easily allow you to write your own custom notifications and/or simply leverage Apprise as routing service to perform admin tasks for you.  See here for more details: https://github.com/caronc/apprise/wiki/decorator_notify
  - It has 100% code based test coverage. :)
I hope to continue to add more services (and break 100+ supported services someday). I also hope some of you find it useful for your own project solution!
printvoid 2 years ago

So let’s say my project has a failed job in the pipeline. Can be anything like install failed or build or unit test or e2e job failed. Can I integrate this with gitlab and receive notifications on slack for that job? Is there a sample example implementation?

l2g 2 years ago

I would love to hear anyone's thoughts and/or suggestions on what they'd like to see next!

claytongulick 2 years ago

I love this!

If it were nodejs I'd be using it today, we just don't do much python anymore.

  • remram 2 years ago

    Looks like there is a server: https://github.com/caronc/apprise-api

    So you can use the Apprise API from your app and have it trigger any number of notification services, configured in the Apprise config or web UI.