AgroNode is an IoT telemetry platform for greenhouse and agriculture monitoring.
It streams sensor data from ESP32 devices through MQTT, processes and stores telemetry in Go + PostgreSQL, and visualizes it in a React dashboard.
ESP32 -> Mosquitto MQTT -> Go Backend -> PostgreSQL -> React Frontend
This repository contains the project under agronode/.
agronode/
firmware/
backend/
frontend/
infra/
docs/
docker-compose.yml- MQTT telemetry ingestion (
agronode/{deviceId}/telemetry) - REST API for historical and latest readings
- WebSocket stream for live dashboard updates (
/ws/telemetry) - PostgreSQL persistence with migrations
- Docker Compose full-stack development environment
Base URL: http://localhost:8080
GET /api/healthGET /api/dataGET /api/data/:deviceIdGET /api/latest/:deviceIdGET /ws/telemetry(WebSocket)
Full API details: agronode/backend/docs/API.md
Topic:
agronode/{deviceId}/telemetryPayload shape:
{
"deviceId": "esp32-lab",
"timestamp": 1715539200,
"version": 1,
"sensors": {
"temperature": 24.5,
"humidity": 60,
"co2": 450
}
}See full contract in agronode/MQTT_CONTRACT.md.
cd agronode
docker compose up --buildServices:
- Frontend:
http://localhost:5173 - Backend API:
http://localhost:8080 - MQTT:
localhost:1883 - PostgreSQL:
localhost:5432
APP_PORT=8080
DB_HOST=postgres
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=postgres
DB_NAME=agronode
MQTT_BROKER=tcp://mosquitto:1883
MQTT_TOPIC=agronode/#