Back to ProjectsIoT + Mobile + Backend
EcoSprinkle
Water Smarter, Grow Better
Overview
Full-stack IoT smart irrigation platform. ESP32 reads soil moisture and DHT22 data, publishes via MQTT to a Node.js backend (with its own Aedes broker), stores readings in MongoDB, and serves a Flutter mobile app over REST + WebSocket. Includes a promotional landing page built with React/Vite/Tailwind.
Problem
- ▸30–50% water waste from over-watering
- ▸Manual watering is time-consuming and inconsistent
- ▸High water bills and maintenance costs
Solution
- ▸Real-time soil moisture monitoring with automated pump control
- ▸Configurable watering schedules + auto mode
- ▸24/7 remote monitoring via mobile app
System Architecture
┌─────────────┐ MQTT ┌──────────────────┐ REST/WS ┌──────────────────────┐
│ ESP32 │◄─────────►│ Node.js Backend │◄───────────►│ Flutter Mobile App │
│ (Sensors) │ Telemetry│ (Aedes Broker) │ HTTPS │ (Cross-Platform) │
└─────────────┘ └───────┬──────────┘ └──────────────────────┘
│
┌─────────▼─────────┐
│ MongoDB (Mongoose)│
└───────────────────┘Key Features
- ▸Smart Irrigation — automated watering based on soil moisture thresholds
- ▸Scheduling & Automation — multiple schedules, auto mode
- ▸Mobile Control — real-time monitoring, push notifications
- ▸IoT Hardware — ESP32, DHT22, soil moisture sensor, relay module
- ▸Data Visualization — interactive charts for activity logs & water usage
- ▸WiFi Provisioning — QR code pairing, automatic reconnection
- ▸Smart Alerts — real-time plant health notifications
Technology Stack
Mobile
FlutterDartmqtt_clientsocket_io_clientfl_chartmobile_scanner
Backend
Node.jsExpressMongoDBMongooseAedes (MQTT)Socket.IOJWT
Hardware
ESP32Soil Moisture SensorDHT22Relay ModulePump
Website
React 18ViteTailwind CSSFramer Motion
Notable Design Decisions
- ▸Embedded MQTT broker (Aedes) inside the Node.js backend — no separate broker service
- ▸Dual communication: MQTT for device telemetry, REST + WebSocket for mobile app
- ▸QR code WiFi provisioning for zero-config device setup
- ▸JWT authentication with device-specific security keys
- ▸Flutter cross-platform from a single codebase (Android APK currently, iOS planned)