What is Push notification?

A push notification is the message that pops up on your mobile iOS or Android, and sometimes on your desktop or a web browser.  It's often used by application publishers and authors to notify the end-user's device about certain event.

It looks like SMS text message and local mobile alerts, but they are application oriented only appears to user who use the application.

Users can stop any push notification anytime from their mobile settings in the notifications section. However, they are essential for many applications, so the user should be selective when selecting the app.

Push technology (server push) are technical term for internet-based communication that occurs when a server notifies the client about certain transaction (notification).

Types of push notification

There are three types of push notifications: mobile app push notification, web push notification and desktop push notification.

If you are using iPhone or iPad, you are most likely to be getting your push notification through Apple Push Notification Service (APNs) which is created, managed by Apple.

If you are an Android user, Google got Android application developers with Firebase Cloud Messaging which is the successor of Google Cloud Messaging.

Both Apple and Google push notification services are proprietary and commercial services.

Therefor, in this article we will list open-source free push notification servers and tools for developers who want to use open-source tools for better control which also will ensure privacy and lower cost.


Open-source Push Notification Solutions:

1- Uniqush


Uniqush push notification is a free and open-source solution for push notification, it supports GCM and FCM for Android, APNs for Apple iOS devices, and ADM for Amazon Kindle tablets.

Source: GitHub

GitHub - uniqush/uniqush-push: Uniqush is a free and open source software system which provides a unified push service for server side notification to apps on mobile devices.
Uniqush is a free and open source software system which provides a unified push service for server side notification to apps on mobile devices. - GitHub - uniqush/uniqush-push: Uniqush is a free an…

2- Pushkin

Pushkin is a free open-source tool for sending push notification. It's built with Python and no longer maintained, However, it is still popular among developers as it was forked and used in dozens of projects several times.

GitHub - Nordeus/pushkin: Pushkin is a free open source tool for sending push notifications
Pushkin is a free open source tool for sending push notifications - GitHub - Nordeus/pushkin: Pushkin is a free open source tool for sending push notifications

3-  Pushy (iOS)

Pushy is built as a template for push notification for Apple Push Notification (APNs) Server with full Swift support. Though, it didn't have any update for 3 years, it's a good template for iOS developers.

GitHub - george-lim/pushy: An open-source APNs provider + iOS client to integrate push notifications.
An open-source APNs provider + iOS client to integrate push notifications. - GitHub - george-lim/pushy: An open-source APNs provider + iOS client to integrate push notifications.

4- Pigeon (Elixir)

Pigeon is an iOS and Android Push notifications for Elixir programming language. It's the ideal Elixir push notification server.

It's supported and packed by hundreds of developers.

GitHub - codedge-llc/pigeon: iOS and Android push notifications for Elixir
iOS and Android push notifications for Elixir. Contribute to codedge-llc/pigeon development by creating an account on GitHub.

5- Android PN Server and client

This project is formed of a client and server which you can get both for free as open-source projects.   The project is also available as free version at F-Droid application store.

The project didn't get any update for years, but it's fairly stable.

GitHub - daktak/androidpn-client: Android Push Notification cilent
Android Push Notification cilent. Contribute to daktak/androidpn-client development by creating an account on GitHub.

6- Push.js

Push.js is a desktop push notification framework which comes with full support for ES2015, and rich ecosystem.  It also supports third-party plugins and integration as it also the best open-source desktop notification solution for node.js and electron applications.  

Push.js is easy to implement and use with few steps. Its functionalities can be also extended through plugins like Firebase Cloud Messaging plugin. Developers also can create their own custom plugin thanks to a simple production-aware API Push offers.

Push v1.0 | Javascript Notification Framework
The world’s most versatile desktop notifications framework

7- Pushd: A Universal Mobile Push daemon

Pushd is rich protocol push notification server and mobile devices and web applications. It provides a layer for Apple push Notification Services (APNs), and Google Notification (Firebase Cloud Messaging).

This is a features-rich server application, it supports custom features for iOS like automatic badge incrementing, messages template, broadcasting, direct messaging, Redis backend, salient mode and more.

Above all, It's easy to install, configure, maintain and extend.


This is the most popular open-source project in this list among developers as it has a large supportive community and about 25 contributors.

GitHub - rs/pushd: Blazing fast multi-protocol mobile and web push notification service
Blazing fast multi-protocol mobile and web push notification service - GitHub - rs/pushd: Blazing fast multi-protocol mobile and web push notification service

8- AirNotifier

AirNotifier is an open-source push notification server for mobile and desktop. It supports iPhone and iPad devices (APNs HTTP/2), Android devices through Firebase Cloud Messaging (FCM), Windows 10 desktop (WNS protocol).

AirNotifier features an API access control, unlimited number of devices, logging activities, access key management and web-based dashboard.

GitHub - dcai/airnotifier: Push Notifications Server for Human Beings.
Push Notifications Server for Human Beings. Contribute to dcai/airnotifier development by creating an account on GitHub.

9-  Gotify (Self-hosted push notification service)

Gotify is a self-hosted push notification service server. It's built with Go programming language to ensure stability and portability. It consists of server, command line (CLI) application, android client, iOS client and rich plugin architecture.

It works on Windows servers, Linux servers, as well as it provides a fully functional docker image.

Gotify
A self-hosted push notification service. Gotify has 14 repositories available. Follow their code on GitHub.

10- Iris

Iris is yet another push notification server without using Google Cloud Messaging (GCM), Firebase Could Messaging service  (FCM)  or Apple Push Notification  service (APNs).

It's a self-hosted server, you can install it at your server and integrate it with your projects.

Iris requires emqttd server to be installed first to be able to use the messaging service.

GitHub - 7-iris/iris_server: Self hosted push notifications
Self hosted push notifications. Contribute to 7-iris/iris_server development by creating an account on GitHub.

11- OpenPush


OpenPush is an open-source self-hosted replacement for Android Push notification service which is a proprietary messaging service.  Note that it's still in development.

OpenPush - A Free, Decentralized Push Messaging Framework for Android | F-Droid - Free and Open Source Android App Repository
Push messages are an essential part of connected mobile devices. They arealso one of the critical missing pieces in the open source Androidecosystem. Until n…

12- PushBits

PushBits is a relay push notification server which deliver the messages based on Matrix network. It uses Gotify for sending messages and receiving clients  for mobile devices.

Matrix is an open-source secure and decentralized communication protocol for real-time communication. It supports end-to-end encryption, instant messaging, VoIP, WebRTC and bridging.


It's a new project so expect new functionalities to be added in the near future.

GitHub - pushbits/server: A simple server for push notifications via Matrix (and a minimalistic alternative to Pushover and Gotify with a strong focus on security) 🚀📯
A simple server for push notifications via Matrix (and a minimalistic alternative to Pushover and Gotify with a strong focus on security) 🚀📯 - GitHub - pushbits/server: A simple server for push not…

13- Simple-web-notification

Simple web push notification is a simple yet powerful implementation for web notification with JavaScript. It can be used for web applications with adding just one file with no external dependencies.

It works with all browsers with desktop supported notification API.

GitHub - sagiegurari/simple-web-notification: Web Notifications made easy
Web Notifications made easy. Contribute to sagiegurari/simple-web-notification development by creating an account on GitHub.

14- WebPush (PHP)

WebPush is a web PHP-based push notification system which uses Web Push protocol. It can be added and implemented with PHP application with ease. However, it only supports PHP 7 and later.

GitHub - web-push-libs/web-push-php: Web Push library for PHP
Web Push library for PHP. Contribute to web-push-libs/web-push-php development by creating an account on GitHub.

15- Web-push (JavaScript)

This is yet another web push notification service, we can say it's the counterpart for WebPush (PHP) but within JavaScript. But we have to say it comes as a rescuer and a replacement project to projects which use the legacy Google Cloud Messaging API.

GitHub - web-push-libs/web-push: Web Push library for Node.js
Web Push library for Node.js. Contribute to web-push-libs/web-push development by creating an account on GitHub.

Conclusion

Open-source push notification alternatives are cost- and resources effective solutions to the commercial proprietary services, but they also come with their cost of maintenance and management.

Here, we selected the best we can find, however, there are more we have ignored and missed. If you think that we missed one, please let us know.