The software of the Caretaker system consists of various different parts:
The backend server contains all of the main business logic that manages and controls the remote devices. It is written in the Ruby language and uses the Grape framework to implement a REST HTTP API. All data is persisted into an SQLite database.
The Caretaker server software is hosted at GitHub: https://github.com/grappendorf/caretaker-server
The Caretaker frontend is implemented as a Single Page Application (SPA) and is written in the CoffeeScript language and uses the Polymer library to implement the user interface. The frontend communicates with the backend through HTTP REST calls and Websocket events.
The Caretaker web application software is hosted at GitHub: https://github.com/grappendorf/caretaker-webapp
The firmware of the devices like switches, remote controls and sensors is written in the C++ language and is compiled into binary code for microcontrollers of Atmels AVR architecture (like the ATmega328). The firmware makes heavy use of the Arduino Framework and lots of the supplied third party libraries.
The Caretaker device firmware is hosted at GitHub: https://github.com/grappendorf/caretaker-devices