`iot_fullsystem` is one of my most complete end-to-end builds. It connects ESP32 hardware to a server, web dashboard, and mobile client, with a simulator for testing when hardware is not available.
This project forced me to work across very different layers at once: embedded programming, APIs, realtime communication, frontend dashboards, and mobile UX. It is one of the clearest examples of how I approach system design instead of only page-level UI work.
- A Nuxt-based dashboard for authentication, device control, timers, and live status updates.
- A React Native mobile app to mirror the control flows on phones.
- An ESP32 and simulator layer that can send sensor data and receive control commands.
- Web and mobile clients send control actions to the server.
- The server persists state and pushes updates over WebSocket.
- The ESP32 receives commands and sends back sensor data.
- A Python simulator stands in for hardware during development and testing.
- Nuxt 4 web application with realtime dashboard behavior.
- Expo and React Native mobile client.
- C++ and ESP-IDF on the hardware side.
- Cloudflare Tunnel and PM2 based deployment flow documented in the repository.
The hard part here is coordination: keeping state changes understandable when user actions, timers, automation rules, and device data can all affect the same system. That makes this project a systems problem as much as an app problem.
The repository already documents the architecture, transport paths, and feature set. It is the clearest example in my workspace of hardware and product engineering meeting in one project.