7 weeks of implementing notification pipeline
August 8, 2021

The 7 weeks out of 10 weeks of coding period of Google Summer of Code is over. These weeks were packed with a lot of learning, fun, challenges, and coding.
I started with the goal of implementing a notification pipeline to enable different types of live-listening notifications like mail, web push, Slack, Twitter, and Facebook. I also wanted to reduce the steps that need to be followed by moderators for issuing notifications. You can find more details of my plans in my previous blog.
At the beginning of the coding period, I started with basic knowledge of Elixir and got a chance to explore many related topics.
First, I wrote code for a simple mail adapter to support the feature of sending automated emails to moderators on reporting of any detection from the live-listening site. I found a cool library called Bamboo that made my work easy.
To onboard notifications on Slack, Twitter, and Facebook I implemented a webhook that can be triggered by sending POST requests from the admin panel of moderators.
We are using the PostgreSQL database for storing data. The ER model (Entity Relationship model) of the live-listening site looks like:-

ER model of the live-listening site
I have added a table for recording notification events in the existing database schema. I haven’t used GraphQL (an open-source data query and manipulation language for APIs) before, so I also got a chance to explore and learn how to write queries and mutations in GraphQL to make querying and updating of data easy. I wrote test cases to test my functions and have also done integration testing.
These 7 weeks not only involved hours of coding but moments of fun too. We have an ‘All-GSoC’ call every week on Tuesday where we start with a nice ice-breaker round on different topics of discussion and then share our weekly progress and any roadblocks or issues we are facing.

Screenshot taken during the ‘All-GSoC’ call
Thanks for the read. I’m looking forward to delivering more good things in the future.