Covid Flows

Covid Flows is an iOS app that shows Covid-19 trends by country, state, or county, based on Johns Hopkins data. It can

  • Sort regions by confirmed cases, deaths, rising regions, or spiking regions

  • Show graphs for either a single region or compare regions

  • Show timescales covering the entire pandemic history or recent months

  • Display either data as either totals or per 100,000

  • Star specific graphs for later reference

  • Share graphs by text or email

Covid Flows runs on iPhones and iPads in portrait or landscape modes

There are three main views

  • Regions - shows countries, states and provinces for Canada and the United States, and counties for the United States

  • Starred - shows saved charts like Scandinavia and California/Florida

  • Adjust - changes chart highlights to emphasize some regions and put other regions in the background

The Regions view has a region list, a region(s) chart, and action buttons. The Canada and United States regions can be expanded to provinces and states by pressing the down icon or collapsed by pressing the up icon. United States states can be expanded or collapsed to show counties. Long pressing the region chart shows a view with only charts. Pressing the title of one a chart shows a view with only that chart.

The Regions view has 5 action buttons

  • The sort button sorts regions by names, total confirmed cases, daily confirmed cases, total reported deaths, daily reported death, rise (overall increase in cases), or spike (a short term increase). The spike metric picks up recent changes, but is sensitive to noise.

  • The chart type button switches between showing one region per chart and showing several regions. Tapping an item in the region list will either switch to it in the one region view or add it to the shown regions in the multi-region view. Long pressing an item in the multi-region region view will start a new multi-region view with only the selected item.

  • The calendar button switches between showing the entire pandemic history, the last year, or the last 240, 120, or 60 days.

  • The population button switches between showing total case and death counts and per 100,000 counts. The per 100,000 counts are better for comparing regions with different populations.

  • The star button saves the current chart in the starred chart list.

The chart views have the same buttons as the regions view, except they do not have a sort button and do have a share button

  • The share button can print the chart or send it to a contact by text or email.

The Starred chart list saves charts with specific regions, highlights, and timescales for easy reference. It comes preloaded with example charts like Israel, Scandinavia, and the United Kingdom.

Starred charts can be

  • Renamed

  • Replaced with the current chart (maybe after adjusting highlighting)

  • Deleted

The Adjust view can change the look of charts by

  • Highlighting some regions and fading the others into the background

  • Changing the highlighting, either popping the color or shifting the color towards black, and adjusting the degree of the pop or shift

  • Changing the background fade, either shifting colors towards black, white, or grey, adjusting the degree of the shift, and adjusting the transparency of the faded colors.

  • Restoring all the highlight options to their defaults

Under the Hood - Covid Flows reads Covid-19 data from the Johns Hopkins Covid-19 Github repo, processes it on a Google Cloud VM instance, writes it to a Google Firestore database running under the free Spark Plan level of service, and uses a Flutter app to display the data.

The backend data processing is done in Python. The source is in

The flutter app source is in Sadly the name "Covid Trends" was taken on the iOS app store, so the app name is "Covid Flows".

The help documentation is hosted on Google Sites.

Limitations - Covid Flow's Firestore database runs under the free Spark plan level of service which limits it to 20,000 reads per day. Each region that is graphed in the Covid Flows app uses up one of those reads, so if a typical session reads data for 10 regions, only about 2,000 sessions can be run per day before the limit is hit and the database shuts down until the next day.