loading...
Cover image for CovidComm | A Twilio DEV Hack Project

CovidComm | A Twilio DEV Hack Project

l04db4l4nc3r profile image Angad Sharma ・4 min read

Introduction

COVID-19 is a stressful time for people, who tend to panic. In such a case, I decided to build an application which solves the following two issues:

The first issue in a time of international crisis due to the pandemic is that a lot of fake news is spreading over social media. People need a reliable, and moreover, regular source of news and information related to the COVID-19 pandemic.

The second issue that plagues people is the uneven distribution of resources. I have this friend of mine, who need not be named. Her family panicked after the announcement of a nationwide lockdown. They immediately rushed into the nearest super-store and bought loads and loads of resources. This hoarding caused a lot of potential wastage in the household. Fortunately they were kind enough to distribute their resources to the neighbors, who were in dire need of the same.


What I built

CovidComm is a project that ensures that people stay up to date with the latest news about coronavirus. It has the following features:

  • World COVID-19 status per country
    • Total and Daily Cases
    • Total Deaths and Daily Deaths
    • Total Infected and Daily Infected
    • Total Cured and Daily Cured
    • Filter by Everything
  • Trending news related to coronavirus
    • Fetched from multiple media platforms
    • Bite sized news TLDR;
  • Resource redistrubution system
    • Request for resources
    • Respond to other people's requests
    • Contact respondees
  • CovidBot
    • An opt-in information service
    • Calls you up daily and reads you bite sized news
    • Save time and effort trying to procure news
  • Multi Platform
    • Release for MAC OS
    • Release for Linux
    • Release for Windows

Demo Link

This video contains the practical demo of the project as well as a voice recording of the CovidBot, which calls subscribers and informs them of the latest COVID-19 related news on a daily basis. Note that I am using a trail TWILIO account so the bot does say some garbage stuff in the beginning, but that can easily be done away with by shifting to a paid account.

Stick around till the end to see the CovidBot in action!


Link to Code

This project is distributed between two repositories: One for the backend of the project and one for the desktop application:

GitHub logo L04DB4L4NC3R / covidcomm

Stay updated in the time of the coronavirus pandemic

CovidComm

A project for communication aid during the COVID-19 outbreak. Note that this project is made for the Twilio DEV community Hackathon. The following is the track being followed in this project:

COVID-19 Communications

Head over to the official user interface repository for CovidComm to look at it's features, demo, and installation. Head over to DEV to see the submission blog for this project.

Alt text

Getting started

  • Create a file called .env with the following content. You can configure it according to your own desired settings.
# JSON Web Token
JWT_SECRET="sajndaskdnsakdnaksndjs"
# Morgan logging level
LOGGING_FMT="combined"
# The full API URL being used for fetching news
INFO_API_URL= ""
# Calling CRONJOB time
CRON_DEFAULT_TIME="* * * 1 * *"
# Calling CRONJOB time for testing
CRON_TESTING_TIME="10 * * * * *"

# SALT for hashing, should be an

CovidComm Desktop Application

This is a desktop application for the covidcomm project.


Index


Features

  • World COVID-19 status per country
    • Total and Daily Cases
    • Total Deaths and Daily Deaths
    • Total Infected and Daily Infected
    • Total Cured and Daily Cured
    • Filter by Everything
  • Trending news related to coronavirus
    • Fetched from multiple media platforms
    • Bite sized news TLDR;
  • Resource redistrubution system
    • Request for resources
    • Respond to other people's requests
    • Contact respondees
  • CovidBot
    • An opt-in information service
    • Calls you up daily and reads you bite sized news
    • Save time and effort trying to procure news

Demo

I have recorded a practical demo for the usage of the application. Click here to view it on youtube.


Installation

Head over to the releases page to get the application for Windows, MAC OS and Linux.


Contributing

To start…


How I built it (what's the stack? did I run into issues or discover something new along the way?)

When I started off with this project, I had one goal in mind. To learn from the crisis around me and build something useful for which there is a need. I also had an ulterior motive: my self learning (which I believe every developer should have). I was well versed in NodeJS but had never tried TypeScript out. I used this time to learn TS from scratch and build a backend using the same.

I had initially planned to make a website for the project, but I am not exactly fond of frontend web development so I decided to make a desktop application instead. Now I had worked with electronJS earlier so I knew that it has its own plethora of issues. I did a lot of research on which framework I can use (even considered making an X11 application using libxcb but decided to make it cross-platform). I landed on Xojo, which immediately caught my attention.

Now I had never heard of Xojo before, let alone use it. I quickly learnt how to program sweet XojoScripts for API fetch but ran into yet another problem: Xojo is proprietary. Which meant that I needed a paid license for building and exporting the project to various platforms. This dissuaded me since I had already spent hours on Xojo to build a desktop app. As a last resort I decided to search the ever growing list of GitHub student pack integrations. And low and behold, I found a free Xojo license in the student pack. I was overjoyed, set it up the very same day and built my first binary for linux!

One last issue I faced was time management. Since I try to be a perfectionist, at least when it comes to code quality, I decided to adopt the Clean Architecture for my TypeScript backend, which consumed a lot of time but made the code very readable. On the top of that I had to build and maintain the desktop application also, including the user interface, integrations and IPCs. It took a lot of time but I eventually got a build which is worth showing off :). Granted it is not the best UI out there (not even close), but I was more focused towards the functionality.

Stack

Technology Where it is being used in the project
TypeScript Used with NodeJS for building the backend
Express Backend framework for NodeJS
MongoDB Used as a database to store essential user and request details
Xojo Used for building the Desktop Application for MacOS, Windows and Linux
Twilio programmable voice API For calling and reading out the news
Twilio verification service For verifying phone numbers on the fly

Future Scope

The main future scope of this project is to include geolocation so that the people closest to you are the ones who can help you out.


Additional Resources/Info

Posted on by:

l04db4l4nc3r profile

Angad Sharma

@l04db4l4nc3r

Backend Developer and DevOps SysAdmin

Discussion

markdown guide