The only dashboard you need (maybe)

When you have a bunch of data stored far away in a unknown place (aka "The Cloud"), it can be nice to have a way to display that data in a neat and simple way. In addition, since our project focuses on health and training, it is a necessary tool for the "athlete" so he or she can know what is really going on with his body on the fly!

With this as a starting point, we developed the "Visma PT Dashboard", a dashboard (or HUD depending on the device you're on) that displays all relevant health, tracking and performance data that we record in the cloud for a given person during a workout (or during any activity).

The dashboard is a .Net Web App coded from scratch that runs in Azure. It also has a Web API with endpoints for updating the various data displayed. The API is called by various Azure Functions that on their side pulls data from Azure Data Lake Storage and Nokias Health API. By doing all the data storing and processing in Azure Data Lake Storage and Azure Functions, the Visma PT Dashboard is completely disconnected from any major business logic, and that ensures that the uptime is near 100% and is virtually bug free(/s).

When the Azure Functions has pulled the data they need, they call the Visma PT Dashboard API, and SignalR is used to update the data on the dashboard. This means the user never has to refresh the dashboard manually, it is updated instantly when new data arrives from the Azure Functions.


The dashboard contains some basic data about the athlete, as name, weight and height (top row) (ignore the height icon, WIP). The two latter are pulled from the Nokia Health API, and we have a Nokia Body+ Weight scale that automatically synchronizes weight data++ to Nokia Health. The Nokia Health API is called every minute from an Azure Function to get the latest weight and height of the "athlete".

There is also live tracking of the athletes position and altitude (map and bottom row) (and eventually velocity, but this is a feature that comes in Visma PT Dashboard 2.0), and these values are dynamically plotted in to Googles Map API as they come in to the Dashboard via the Visma PT Dashboard API and SignalR.

The athletes body temperature and heart rate is also displayed and dynamically updated (bottom row).

In addition, we display the amount of sweat the "athlete" is currently emitting (read more about that here). (At the top right of the dashboard)

The HUD is of course beautifully engineered to fit any screen (included smart phones), and can therefore be used by athletes as they exercise.


As a revolutionary feature, the dashboard also displays a model of the athletes body as he exercices. The athlete is recorded on camera, and via tensorflow openpose (tf-openpose) a model is generated with the athletes body parts as x- and y-axis coordinates. The coordinates are then live pushed to the Azure Data Lake Storage, and an Azure Function is then pushing that data to the Visma PT Dashboard API. Using canvas-drawing the model is drawed on the screen every time input comes to the javascript-logic used displaying the model. When data comes in, the dashboard is faded out and an overlay of the model covers the screen. When data stops arriving, the overlay is faded out and the dashboard appears again.

With this HUD/dashboard we hope to get the HUD-badge and the Shiny pixels-badge :)