Full-Stack IoT Development

ESP32 Monitoring App

An end-to-end IoT Monitoring Solution bridging hardware sensors and web technologies. The project provides two distinct tiers: an educational mode utilizing a simple PHP backend with JSON storage, and a robust production-grade mode featuring a modern frontend and backend architecture.

ESP32 (C++) PHP & JSON Node.js Express React Dashboard REST APIs WebSockets
Live Telemetry Active

Project Overview

The ESP32 Monitoring System is designed to seamlessly collect and visualize hardware sensor telemetry across the web. Developed with a dual-tier approach, the architecture serves two distinct purposes: offering an accessible Educational Mode for prototyping and learning, alongside a fully-featured Production Mode built for scale.

This flexibility ensures the system can be deployed instantly via shared hosting or scaled into modern cloud environments using containerized microservices and decoupled frontends.

Dual-Tier Architecture

Tier 1: Educational Mode (PHP / JSON)

ESP32 Client

HTTP POST req

PHP Script

Parses & saves data

JSON File / HTML

AJAX data polling

Workflow: The ESP32 sends a basic POST payload to a standard PHP endpoint. The PHP script appends the telemetry to a flat `data.json` file. A lightweight HTML frontend uses `setInterval` to poll and render the JSON data.

Tier 2: Production Mode (Node / React)

ESP32 Client

Secure MQTT/REST

Node.js API

Express, WebSockets & DB

React Dashboard

Live state & charts

Workflow: The ESP32 streams optimized payloads to a Node.js backend. Data is validated, persisted in a database (like MongoDB/PostgreSQL), and pushed directly to a React frontend in real-time via WebSockets.

Development Lifecycle

1

Phase 1: ESP32 Hardware Integration

Configured the ESP32 microcontroller with standard C++ firmware using the Arduino IDE. Established Wi-Fi connection logic, sensor data reading, and structured JSON payload formatting.

2

Phase 2: PHP/JSON Prototyping (Edu Tier)

Created a fast, dependency-free PHP layer capable of capturing incoming HTTP POST requests. Data was serialized into a simple data.json file to simulate a database for rapid frontend prototyping.

3

Phase 3: Production Backend (Node.js)

Transitioned the backend architecture to an Express.js server for improved asynchronous request handling, proper CORS headers, validation pipelines, and secure API key management for the ESP32 endpoints.

4

Phase 4: Modern Dashboard UI

Replaced the vanilla JavaScript polling loop with a fully-fledged React frontend application. Integrated charting libraries and context providers to visualize the sensor telemetry efficiently in the browser.

Challenges & Solutions

1. Concurrent File Writes in PHP

During high-frequency data logging, multiple HTTP POST requests would hit the PHP script simultaneously, causing JSON file corruption due to concurrent I/O operations. Solution: Added flock() mechanisms in the educational tier to ensure exclusive file locks, and ultimately solved the issue permanently in the production tier by using a proper database system.

2. Network Latency & Polling Overhead

Relying on AJAX polling in the initial prototype generated immense unnecessary network traffic and delayed response times for the dashboard. Solution: Integrated WebSockets (via Socket.io) in the production backend, converting the data flow into an event-driven push architecture, cutting latency to under 50ms and vastly reducing server load.

Project Metadata

  • Category IoT / Web App
  • Status Deployed
  • Hardware ESP32 DevKit
  • Network Layer HTTP / WebSockets

Architecture Highlights

Educational Tier
PHP & JSON Prototyping
Production Tier
React + Node Backend
Real-Time
Low-Latency Rendering

Tech Stack & Skills

Embedded C++ (ESP32)
PHP 8.x Scripting
JSON File I/O
Node.js & Express API
React.js Component Architecture
RESTful Routing & WebSockets