Inspiration
Crop Recon was inspired by a simple problem: farms and green spaces often rely on delayed, manual checks to spot dangerous environmental changes. We wanted to build a system that feels like a live command center, where sudden temperature or humidity shifts are detected immediately and surfaced in a way that is actionable, not just technical. Our goal was to combine real sensor data, real-time visuals, and automated alerting into one platform that helps people respond faster. The use of a esp32c3 and lora module are very affordable while also being scalable and they last on a very long charge because they are very low power.
What it does
Crop Recon is a real-time environmental monitoring dashboard for distributed sensor nodes. It:
- Ingests telemetry from sensor nodes over MQTT
- Stores readings in MongoDB for history and analysis
- Streams live updates to a web dashboard with Socket.IO
- Visualizes node health and trends with charts and a tactical map
- Detects sudden anomalies (temperature/humidity deltas) automatically
- Creates and manages alert lifecycles (open/resolved)
- Sends external alerts to Discord
- Generates AI-based incident briefing bullets from recent alert logs
In short, it turns raw sensor events into live situational awareness.
How we built it
We built Crop Recon as a full-stack JavaScript system:
- Frontend: Next.js + React for the dashboard UI
- Realtime: Socket.IO for live push updates from backend to client
- Backend: Express.js API server
- Data layer: MongoDB + Mongoose models for sensor readings and alerts
- Messaging: MQTT client to receive telemetry from field nodes
- Mapping/visualization: React Leaflet and charting components
- Notifications: Discord webhook integration
- AI summary: Gemini API for concise incident briefings
The architecture is event-driven: incoming node data is processed once, persisted, checked for anomalies, emitted to clients, and used to update active alert state.
Challenges we ran into
- Designing anomaly logic that avoids false positives while still reacting quickly
- Managing alert state transitions cleanly (open vs resolved) across changing node readings
- Handling real-time synchronization between ingestion, database writes, and frontend sockets
- Keeping chart history performant and readable with multiple nodes and frequent updates
- Coordinating environment variables and local networking assumptions across frontend/backend services
- Integrating external APIs (Discord/AI) with robust fallback behavior when keys are missing or requests fail
Accomplishments that we're proud of
- Built a complete end-to-end pipeline from physical sensor stream to live dashboard
- Implemented automated anomaly detection with configurable thresholds
- Added real-time alert lifecycle tracking with clear status updates
- Shipped a command-center style interface that is both functional and engaging
- Added practical incident communication via Discord alerts
- Added AI-generated summary bullets to transform logs into quick operator briefings
- Kept the system modular enough to extend with more node types and detection rules
What we learned
- Real-time systems are as much about state management as they are about data transport
- Good alerting is a product problem, not just an engineering one: signal quality matters
- Clean API boundaries and shared data shapes are critical when frontend and backend evolve quickly
- Fallback paths (for missing keys/services) make demos and production behavior much more resilient
- Hackathon velocity improves dramatically when the team aligns early on architecture and scope
What's next for Crop Recon
- Harden deployment for production with HTTPS-first URL handling and better CORS config
- Add authentication and role-based access for different operators
- Introduce geofencing and per-zone alert policies
- Expand anomaly detection with baseline models and trend-based forecasting
- Add SMS/voice escalation (e.g., Twilio) for high-severity incidents
- Improve observability with health checks, metrics, and alert audit trails
- Support more sensor types (soil moisture, light, pH, wind) for richer agronomic insight
- Add a way to control the nodes from the dashboard. For example, when there is a temperature spike you can turn on the sprinklers
Built With
- c++
- esp32
- express.js
- javascript
- lora
- mongodb
- mqtt
- next.js
- react
Log in or sign up for Devpost to join the conversation.