Kickboxing Workout Dashboard

I regularly take kickboxing classes at Fly Kickboxing. A workout summary is then sent to my email following each class. I log this data and track my performance over time using the dashboard below. 

Data Notes:

The source data for this dashboard is provided from two systems:

A data architecture diagram is presented below to show how the data goes from raw input to dashboard. 

The source data is loaded into two separate tables in a Snowflake database via a Streamlit webform. A view in the database joins the data from the two tables based on an imputed timestamp for each class. The timestamp from Impact Wrap is rounded off to the nearest half-hour as the raw start time in the Impact Wrap system is based on when the class actually starts - typically a few minutes after the scheduled start time. In addition, a table in the database stores coach information - the coach information is then joined to the view in Tableau.

A script in Hex reads the view and the coach table, and pushes those into a Google Docs spreadsheet. This allows Tableau Public to read 'live' data and I do not need to republish each time there is an update.

As an API is not yet available to automate the data pull from each source, manual logging is necessary.

Why didn't I just write the data into Google Sheets? I am trying to show more of a business case value of using Streamlit, Snowflake, and Hex. The business cases I am thinking of include:

I may end up pushing the dashboard to Tableau Cloud, connect directly to Snowflake, and using the Tableau Embedding API to push the dashboard here.

To learn more about Fly Kickboxing, visit their website. Better yet - sign up for a class! See you there!

Data Architecture Diagram:

Fly Kickboxing Architecture

To do list: