Weight tracker

Weight tracker

Managing one's body weight can be quite a challenge. And as the quote from Peter Drucker goes, "You can't manage what you can't measure". So, I built a body weight scale that can upload data to an API of my choice, which was the object of this article.

I used ThingSpeak to store this data for some time but then decided I wanted to have my own storing system. Thus I designed a simple Node.js application to handle this.

The application stores and retrieves data from an InfluxDB time-series database, which I deployed on a server of my own. Moreover, the application provides a REST API built using Express so as to exchange data with third party services or devices. Thus, body weight data can be uploaded by the scale using HTTP POST requests.

With this data being stored in InfluxDB, it can easily be displayed using either the InfluxDB GUI or a Grafana dashboard.

The source-code for this application is available on GitHub here.

I also designed a dedicated GUI to visualize the data. It is built using Vue.js, Vuetify and ApexCharts. Data is fetched from the back-end via its the REST API using the Axios HTTP client.

This GUI has been built as a PWA so as to behave similarly to native apps on various platforms.

Its source code is also available on GitHub, here.