An application for retrieving, storing and visualizing internet speeds. Born from a frustration with an internet provided, I wanted an application to monitor my local internet speeds.
The secondary purpose of this application was to explore Firebase. This has led to an over engineered solution to the problem.
Check it out: https://internet-monitor-8c155.web.app/
The solution consists of three main parts:
- a device script which performs the speed test and uploads the results
- cloud functions and services which enrich the speed test results and stores the results in Firestore
- web application for displaying the data including live updates
For a more detail description have a look at the Sequence Flow Diagram below.
- Install Node.js on target device like a RaspberryPi
- Install Ookla Speedtest CLI
- Configure the environment variable file on the device
- Clone the device script
- Install node packages
- Run the script for the first time and complete the initial AuthN workflow
- Setup a cron job to run script periodically
Run firebase emulators by: yarn firebase emulators:start
Run local web application: yarn dev
Build the web application by running yarn build within the app directory.
Deploy everything by running: yarn firebase deploy
- Add functionality to device script to record no connection events
- Chart improvements
- Match styling to the rest of the app
- Reduce the number of time points
- Login:
- Add anonymous login option with simulated data
- Add federated login options
- Add docs to describe the device authN
- Make the device script more packageable
