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

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!


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


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

This post is also available on DEV.