Centralized notification system for listeners with different needs

Listeners across globe

I am Dhananjay Purohit. I recently started my final year at Institute of Engineering and Technology, Devi Ahilya Vishwavidyalaya, Indore, India. I was selected as a Google Summer of Code 2021 student for Orcasound.

I am focusing my summer project on implementing a notification pipeline. The goal is to enable different types of live-listening notifications like mail, web push, Slack, Twitter, and Facebook. I also aim to reduce the steps that need to be followed by moderators for issuing notifications.

Currently, Orcasound has an email list of 1200+ subscribers handled through MailChimp. They are notified manually when bioacoustic experts confirm that orcas are being heard live on an Orcasound hydrophone. As the number of sources of acoustic and visual observations increase, there is a need for a more customized and automated approach to meet the needs of subscribers with different geographic locations and marine species of interest. Over time, we also want to avoid spamming any Orcasound subscribers with irrelevant notifications. 

Here is the flow architecture I have proposed for notifications within the live-listening site:

Upon a report of any interesting sound from a listener, a candidate acoustic event is created along with the 10-second clip of the audio stream. In my proposed flow, the creation of this event would trigger an email notification, resulting in a message being sent to moderators. Moderators will then use the Orcasound admin dashboard to verify whether the audio received with the candidate contains any orca clicks, calls, whistles, or not. Upon verifying the presence of an orca or other species of interest, a trigger can be sent for delivering mail notifications, web push notifications, messages, and posts on Slack, Facebook, and Twitter.  

During my coding phase so far, most of the time I found myself writing code in Elixir. I was not a big user of Elixir before (I have a lot of experience with NodeJS), but after getting a bit more involved in writing code in Elixir I found it interesting. It is a sweet dynamic, functional language for building scalable and maintainable applications. Orcasound uses Elixir for the backend to handle things like live audio-stream of orcas, counting the number of concurrent listeners, and storing detections into a PostgreSQL database. Features like fault-tolerance and event-driven programming also make Elixir the best fit for robust architectures in sites like Orcasound’s live-listening web app.

I’m looking forward to delivering more good things in the future. Thanks for the read.

Leave a Reply

Your email address will not be published. Required fields are marked *