Qnotix

Qnotix is a minimalist Pub/Sub notification system written in Elixir based on just Plug Cowboy module and websockets.

Description

Qnotix is a topic-based system, highly resilient, each topic running within its own, independent, supervised procees.

The Pub side feeds events using HTML Post API. The Sub side is dispatching events through websocket connection.

Both Pub and Sub sides depend and evolve on a named topic and its own port number.

The format of messages, JSON, is similar to that of ntfy. As Sub client, the ntfy Android app must be used, the flavor available on F-Droid, without Firebase. Not being an Android developer, I would greatly appreciate support for building a dedicated Android client for Qnotix.

Find more details at Qnotix documentation on Hexdocs.

This application (though slighly modified) is actually in production since March 2022 for a private surveillance company, serving more than 150 subscribers from 17 publishers.

Installation

Add qnotix to your list of dependencies in mix.exs:

def deps do
  [
    {:qnotix, "~> 1.0.0"}
  ]
end

Set application's management port (backendPort) and start port numbering of topics (wsStartPort) in runtime.exs.

Usage

Launch server: iex -S mix

Register a new topic: Qnotix.newTopic(topic_name).

Launch a new topic on the desired port Qnotix.newTopic(topic_name, port).

Check the web management interface for supervising topics and ports, registering new topics, kill topics etc.

By example, considering the server runnning localy on port 4000 and a topic named myTopic on port 4111 one can:

Qnotix is only compatible and working with ntfy Android client app. The topic format/url is ws://host:port/topic_name/ws. Ex: ws://192.168.1.1:4001/myTopic/ws

Documentation

http://hexdocs.pm/qnotix

TODO

Kindly asking the Elixir community's support for:

As we lack expertise in mobile apps developmnet we would greatly appreciate the Community's involvement for development of a dedicated notification client for Android/IOS.

License

Copyright © 2022 Quda Theo

This software is released under AGPL-3.0-or-later.