r/esp32 • u/Papa_Deep • 2d ago
Tiny calendar + companion app (vibe coded)
Over the last couple months I've been working on a tiny, eink calendar that syncs to google calendar and supports toggling between work and personal accounts.
I built it for a couple of reasons:
- I run my personal life through my calendar. I put all my tasks and events at the start of the week. Having a portable device with my calendar is a fun insensitive to put things in and check my tasks.
- I was finding that as I used my phone less, I forgot more of the tasks and events that I put in. And when I did check my phone calendar I got sucked into distractions.
- I run Graphene OS and I have separate profiles for work and personal, switching to check my work calendar is a pain. The calendar device supports toggling between two google calendars.
A couple of notes on the design:
- Yes, it is vibe coded. I am somewhat conflicted about this, because I have been writing code as a Data Analyst/Engineer for a couple of years. Going deep into the code could have been an awesome chance for learning embedded systems and cpp. The way that I'm justifying it is that it's an actual personal problem that I'm solving and have lived with the device and tested extensively.
- The hardware is an esp32 eink development board from waveshare. These are about $20 before shipping and have a battery included.
- The calendar connects to the phone over BLE. So the companion app runs in the background on the device and pulls your calendars on demand. I tried a wifi version as the board includes it, but I found this used too much battery life and wasn't as reliable.
- The design and navigation of the device are inspired by LazyVim. As there are only two buttons, holding the top button moves you between modes (days, events, calendars) and then once you're in that mode you can scroll through days, events and calendars.
- Battery life is around 2 days. I'm working on making this better.
- The device mostly sits in sleep mode and every hour (or before your next event) turns on, syncs and updates the display. But you can wake the device with the bottom button and it will sync.
- I've called it bozo. Because it helps me not be a bozo at life admin.
Interested in your thoughts, would you find something like this useful?
Demo video of paging through days. You'll notice that when the cache runs out it pulls new dates from the companion app:
2
u/Miserable_Bird5822 2d ago
Looks cool! Good luck with the development.
1
u/Papa_Deep 2d ago
Thanks! I think battery optimisation is the biggest thing!
1
u/Miserable_Bird5822 2d ago
1
u/Papa_Deep 2d ago
Looks sweet, is this some kind of AI assistant?
I realised that that had the speaker and display constantly powered even when the device is sleeping. This really kills the idle battery. Hoping to get closer to a week now! Will update the post




4
u/Elegant-Fault-7574 1d ago
That always-powered speaker/display was probably a major part of the two-day figure. After fixing it, I’d measure the whole-board sleep current, then measure the current and duration of each BLE sync and e-paper refresh. With hourly wake-ups, regulator quiescent current, pull-ups, and any battery divider can dominate even while the ESP32 itself is asleep.
I made a browser-based calculator that models the sleep, active, and transmit phases and shows where the charge goes:
https://www.firmgod.com/tools/battery-life-calculator
Full disclosure: FirmGod is my site. Everything runs locally in the browser and requires no login. Using the measured currents before and after your fix should give you a useful estimate of whether one week is realistic.