A physical reward system based on the principle of classical conditioning.
I wanted a good and efficient todo application, but I also wanted to mess with a micro-controller that I had laying around.
IMG_1985.MOV
- Create, update and delete tasks (through the website)
- Change task status (through the website & hardware)
- View tasks by date
- Simple tagging system to categorize tasks
- Real-time updates
- Task metrics (streak, total completed, completion rate, etc.)
- Full hardware integration with websockets
The system comprises a React website, an Express server, and a micro-controller. Connected to the micro-controller are several buttons and LEDs, each triggering distinct events sent through a WebSocket to the server. Subsequently, the server broadcasts these events to all connected clients, which then update their state and present the new state to the user. With this setup, users can progress through their current tasks and mark them as completed without needing to interact directly with their computer.
To motivate users and incentivize task completion, the system employs a combination of a large red arcade button and a randomly selected retro completion sound. This approach aims to instill a sense of accomplishment and encourage users to stay engaged with their tasks.
The hardware is composed of a NodeMCU micro-controller, a few buttons, and a few LED's. All of the programming was done in C++ using the Arduino IDE. Currently, the system is connected to a breadboard, but the final version will be soldered to a PCB and powered independently.
The statuses are the states that the system can be in. The system can be in one of the following states:
All notable changes related to the hardware of the PRS are documented in this file.
A basic demo of the website that doesn't utilize the hardware: