For more info, check out his website.
If you are clumsy like me, you might have forgotten a few important events here and there. To combat this, I've decided to build a complete product that makes sure you never lose track of time! My system promises to make you a productivity guru!
Using a stunningly beautiful web application, you can customize your day/week/month by setting events. These events might be repeatable or just one-offs; they might take a fixed amount of time to complete or they might need to remain in the back of your head for the whole day (e.g. your aunt's birthday).
Finally, a dedicated device will remind you both visually and aurally of these tasks before they need to be ticked off. If you plan your day correctly, there is no way you miss anything!
For this complex system to work without revoking its upgradeability (meaning, in the future, one could expand the system to allow for multiple devices that remind you of upcoming events), there is a need for separation:
The server will store details about future and past events using a relational database (specifically, PostgreSQL). The web interface will be written from scratch in HTML, JavaScript (enhanced with jQuery) and Sass. These two components are glued together by a backend custom written in Go.
To provide high reproducibility, everything will be self-contained in a Docker container.
The device that will remind the user of their tasks will need to connect to the server (meaning it requires network access) and will ping it at fixed time intervals to gain knowledge about upcoming events. A screen will provide the user with visual feedback, and, in case the user misses it, a buzzer will trigger as well. The reminder can be postponed (or silenced).
To accomplish this, I figured an ESP32 is best suited.
This is a software-heavy project! With this being said, I would like to point out the exact concepts I've used that were taught during this class:
The server can be a repurposed old computer or, to simplify the process, a Raspberry Pi 4 Model B that I've had laying around :)
The IoT device will be an ESP32 module connected to a bunch of buttons, a small display and a buzzer.
As you can tell, there are plenty of external devices managed by the ESP32.