Here is the tech stack:
Sensor simulator: a small Node script that simulates 5 sensors, each emitting a JSON reading every 1–5 seconds (temperature, vibration/strain, battery level, timestamp, sensor ID) over MQTT.
Backend (Express + Web Socket): subscribes to MQTT, validates and writes each reading to TimescaleDB, a REST API endpoint for historical queries, and broadcasts live readings to connected dashboards over a WebSocket.
Frontend (Next.js): dashboard that shows a live update chart per sensor, a sensor health status, and a historical view (query last hour/day from the REST API).
Infrastructure: MQTT broker (EMQX) and Database (TimescaleDB) containerized through Docker.
Next steps: JWT authentication, rate limiting, CI through Github Actions
