Homefront has a couple of main functions. It has a small network of wireless sensors which measure the temperature and humidity levels on different floors of my house. They also measure the water temperatures of the central heating system. The measurements can be viewed on a quick dashboard or in detailed graphs. The system also sends email on sensor outages.
The other function is to provide my cat feeding machine with feeding times.
The home sensors were implemented with Arduinos and they communicate with the cloud server by Bluetooth through a node.js intermediary which runs on an old laptop. The back-end is written in Clojure and has an Angular front-end. The node.js intermediary communicates using a RESTful API with the back-end.
As the Bluetooth connections were always quite fragile the Arduino and Bluetooth combination was replaced by ESP8266 modules. This also removed the need for the intermediary. Communication with the back-end is done by MQTT traffic relayed by Mosquitto running on the back-end server.
The MQTT broker also does some extra messaging e.g. with the Numitron clock.