Skip to content
FH
All projects
PrototypePrivate client / team work

IoT · Full Stack

VILERT Smart Monitoring

IoT temperature and humidity monitoring platform

React dashboard and Express API for IoT sensors: live MQTT readings, device management, threshold alerting, and offline detection.

ReactTypeScriptExpressPostgreSQLMQTTLeafletReduxTwilio
Request a walkthrough

Client confidentiality applies. Source code and a live demo can be shared privately on request.

VILERT monitoring dashboard

Overview

VILERT was a team project to build a monitoring platform for temperature and humidity sensors. The dashboard provides a device list with map locations, live sensor widgets over MQTT, and a device detail view with a history chart. A companion Express service ingests readings from the MQTT broker, stores them in PostgreSQL, flags devices that stop reporting, and sends threshold alerts over WhatsApp, email, and Telegram.

Problem & solution

The problem

Facilities teams needed a single view of temperature and humidity conditions across devices, instead of checking individual sensors or waiting for threshold alerts.

What was built

A React single-page dashboard that subscribes to MQTT topics through a service layer and renders live values alongside a map, backed by an Express service that consumes the broker feed, persists readings, tracks device liveness, and dispatches alerts through three channels.

Key features

  • Device list with location on a map
  • Live temperature and humidity widgets over MQTT/WebSocket
  • Device detail modal with a sensor history chart
  • Device management with per-device temperature and humidity thresholds
  • MQTT ingestion into PostgreSQL with paginated, filterable history
  • Offline detection when a device stops publishing for a minute
  • Threshold alerts over WhatsApp (Twilio), Gmail, and Telegram with a cooldown window
  • JWT-protected API with admin-gated user management
  • Specified but not implemented: three-role permission model and CSV export

Technical implementation

A separate dashboard SPA and API service share one MQTT broker and PostgreSQL database. The API owns ingestion, device state, history queries, and alert delivery.

Dashboard

React + TypeScript SPA with Redux state, Leaflet map, and Chart.js history views

API

Express 5 REST service with JWT auth, device/user CRUD, and filtered history endpoints

Data

PostgreSQL storing devices, readings, and status transitions

Ingestion

MQTT subscriber on vilert/+/data with per-device offline detection

Alerting

Threshold evaluation dispatched to WhatsApp, Gmail, and Telegram with a debounce window

My contribution

  • Implemented the device detail modal with a live temperature and humidity chart.
  • Built the MQTT ingestion service: readings persisted to PostgreSQL, per-device offline detection, and threshold evaluation.
  • Added alert delivery over WhatsApp, Gmail, and Telegram with a cooldown window.
  • Fixed timestamp handling between device payloads and database storage.

Visual showcase

VILERT sensor monitoring visual
Sensor monitoring visual
VILERT analytics visual
Analytics view visual
VILERT mobile monitoring view
Mobile view visual
View all