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!
{% youtube QAZf4J9LSnY %}
Link to Code
This project is distributed between two repositories: One for the backend of the project and one for the desktop application:
{% github https://github.com/L04DB4L4NC3R/covidcomm %}
{% github https://github.com/L04DB4L4NC3R/covidcomm-ui %}
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.