æroom is a full-stack IoT platform for monitoring and controlling indoor climate and air quality across multiple rooms. It connects hardware sensors to a web interface through a complete data pipeline — from physical device to database to UI.
The course brief asked us to build a connected system from scratch: hardware, backend, and frontend. The design challenge wasn't just technical — it was treating that complexity as a design problem in itself. IoT systems are usually either closed consumer products or developer tools with no thought given to the actual user.
The challenge
The gap in IoT platforms is almost always the same: systems that are technically capable but practically inaccessible. Either locked-down products with no flexibility, or open developer tools that require deep technical knowledge to operate. The brief pushed us to occupy the middle ground — a system built from raw components but designed for a real user.
The multi-room, multi-user context added a meaningful design challenge: how do you give people the right information about their spaces while managing access sensibly across a household or small organisation?
How we approached it
The project ran two tracks from day one: hardware integration and software architecture. On the hardware side, configuring ESP32 microcontrollers with temperature, dust particle (PM2.5), and air quality (VOC) sensors — getting reliable readings and managing wireless transmission before any UI work could begin. On the software side, designing the full data pipeline from MQTT transport through a Node.js broker to MongoDB storage.
Key insights:
- MQTT is the right transport layer for IoT — lightweight, real-time, designed for constrained devices
- The hardware has to work reliably before the software is worth designing — unstable readings invalidate everything downstream
- Multi-room, multi-user design means information architecture is as important as the sensor stack
- Authentication and access control are core to the product — not an afterthought
- Hiding technical complexity (MQTT topics, sensor IDs, database queries) behind a room-centric interface is the whole design job
What we built
Each ESP32 unit measures temperature, dust particles, and VOC air quality, transmitting via MQTT to a Node.js broker that processes incoming data and writes to MongoDB for persistent queryable history. The web interface abstracts the entire technical stack behind a clean, room-centric UI.
The platform supports a multi-room dashboard with live sensor readings across all spaces, per-room device management, and a family sharing system where room access can be granted to other accounts via key-based permissions. Authentication gates all data — only authorised users can view or control specific rooms.
- Multi-room dashboard: All rooms and live sensor readings in one unified view
- Device management: Add, remove, and configure sensors per room
- Family sharing: Grant room access to other accounts via key-based permissions
- Data history: Timestamped readings in MongoDB, queryable over time
- Full authentication: Access control gates every room — only authorised users see their data
æroom was primarily a technical achievement — proving that a complete IoT stack could be built and understood end to end. But the design constraint was equally demanding: making the complexity disappear behind a UI that doesn't require a Node.js background to use.
Building something functional and building something usable are two distinct challenges. This project was the first time I had to solve both at the same hardware level — and the gap between them turned out to be bigger than expected.