logo
Michael Thariath
Full Stack Developer
See more of my projects
Residential Remote Controller
Mar 2019
Residential Remote ControllerPersonal Project
The Stack
ReactJS
Redux
Socket.io
Z-Wave
Linux
Javascript
NodeJS
Links

Summary

I developed this web app to control my home's entertainment, lighting, and HVAC systems. I used a React frontend with a Node.js backend to communicate with several APIs, combining several systems into a single cohesive interface. This was my first experience developing an application that not only served a practical purpose (as opposed to a simple web page) but was also relied on and used daily by my roommates to simplify their lives.

Application Capabilities

  • Control the home's entertainment system&mdashcontrol multiple devices with asingle button touch, e.g. turn on the TV & receiver, set them to the correct inputs, and open Netflix on the Roku
  • Control and see the current status of the home's lighting system
  • Set the upstairs and downstairs thermostats to the desired temperature

Architecture

The application was powered by a Node.js server running on a Raspberry Pi, which served up a Create React App frontend. Deployment was done with a Docker container on a DigitalOcean droplet. I'm just kidding, that was Copilot's wishful thinking. I actually just ran an npm script that built the frontend locally and SSH'd it to the Pi.

Lessons Learned

This system is now retired since I moved, and I plan on making something like this again in the future. Here are some things I will do differently next time:

  • I appreciate the value of a well-tuned CI/CD pipeline
  • I will still use a standalone Node.js server running locally on a Raspberry Pi or other device, but I will deploy the frontend to an edge server
  • I will use one of Next.js, Remix.run, Nuxt, or SvelteKit to build the frontend