{"name":"pomodoro: An ESP32 Focus Timer with E-Paper Display and Rotary Dial","description":"pomodoro is an innovative ESP32-based focus timer designed for enhanced productivity. It features a unique e-paper display for distraction-free timekeeping and a rotary dial for intuitive control. This project offers a physical, fun, and intuitive solution for managing focus sessions, built with readily available components.","github":"https://github.com/Rukenshia/pomodoro","url":"https://osrepos.com/repo/rukenshia-pomodoro","source":"osrepos.com","sourceDescription":"This repository profile is provided by osrepos.com, an open source repository discovery platform.","repositoryProfile":"https://osrepos.com/repo/rukenshia-pomodoro","generatedFor":"open source discovery and AI-assisted research","markdown":"https://osrepos.com/repo/rukenshia-pomodoro.md","json":"https://osrepos.com/repo/rukenshia-pomodoro.json","topics":["ESP32","e-paper","productivity","focus timer","DIY","C++","Arduino","hardware"],"keywords":["ESP32","e-paper","productivity","focus timer","DIY","C++","Arduino","hardware"],"stars":null,"summary":"pomodoro is an innovative ESP32-based focus timer designed for enhanced productivity. It features a unique e-paper display for distraction-free timekeeping and a rotary dial for intuitive control. This project offers a physical, fun, and intuitive solution for managing focus sessions, built with readily available components.","content":"## Introduction\n\nThe `pomodoro` project by Rukenshia presents a unique ESP32-based focus timer, meticulously crafted to enhance productivity through a physical and intuitive interface. This device stands out with its e-paper display, offering a glare-free and low-power visual experience, complemented by a rotary dial for seamless interaction. Conceived from a desire to create a fun and intuitive tool for time management, the project emphasizes a distraction-free approach to focus sessions.\n\nThe creator, with a background in electronics and software engineering, embarked on this project to build something tangible and beneficial for a friend struggling with time organization. Key design choices include the e-paper display, selected for its lack of backlight, large size, and partial refresh capabilities, making it ideal for a device that mostly idles. Input is handled by a robust rotary encoder, while a WS2812 LED provides subtle visual feedback without being intrusive. The device is housed in a custom 3D-printed case, with thoughtful additions like weights and rubber feet to ensure stability during use. The software is developed in C++ using the Arduino framework and PlatformIO, incorporating elements like customizable presets and even \"easter eggs\" like random facts to add a touch of fun.\n\n## Installation\n\nTo get started with the `pomodoro` project, you'll need to set up your development environment and prepare the necessary assets. Please note that the code in this repository is not immediately ready-to-use as some assets and fonts have been removed, but it is designed to be adaptable to your specific needs.\n\n### Prerequisites\n\n*   PlatformIO (the VSCode extension is recommended)\n*   Python 3.13+ for asset generation\n\n### Generating Assets\n\nBefore compiling the code, you must generate the required images, icons, and fonts. Navigate to the project directory and run the following commands:\n\nbash\n# install dependencies with uv or a different package manager\nuv sync\n\nuv run scripts/generate_assets.py\n\n\nAfter generating the assets, you can proceed with building and uploading the firmware using PlatformIO.\n\n## Examples\n\nThe `pomodoro` timer is designed for straightforward use, offering preset focus and break times.\n\nUpon startup, you can navigate between changing settings or entering the preset selection mode. The device provides three default presets: \"Emails,\" \"Coding,\" and \"Focus,\" each with predefined work and break durations.\n\nOnce a preset is selected, the timer begins. When the focus time concludes, the device signals the end of the session by flashing its LED and displaying a message on the screen. You then have the option to start a break. During the break, the e-paper display shows statistics, and every four iterations, a longer break is automatically scheduled to aid recovery.\n\nYou can customize these presets by modifying the `src/main.cpp` file:\n\ncpp\n  timer.addPreset(iconProvider->getPresetIcon(\"Emails\"), iconProvider->getTimerRunningBackgroundImage(), \"Emails\", 15 * MINUTE, 5 * MINUTE, 15 * MINUTE);\n  timer.addPreset(iconProvider->getPresetIcon(\"Coding\"), iconProvider->getTimerRunningBackgroundImage(), \"Coding\", 45 * MINUTE, 15 * MINUTE, 30 * MINUTE, 2);\n  timer.addPreset(iconProvider->getPresetIcon(\"Focus\"), iconProvider->getTimerRunningBackgroundImage(), \"Focus\", 25 * MINUTE, 5 * MINUTE, 20 * MINUTE);\n\n\n## Why Use `pomodoro`?\n\nThe `pomodoro` timer offers a compelling solution for anyone looking to improve their focus and time management. Its physical nature provides a tangible separation from digital distractions, encouraging dedicated work sessions. The e-paper display is a key feature, offering a clear, non-backlit interface that's easy on the eyes and promotes a \"stop working already\" mentality in low light.\n\nThe intuitive rotary dial makes interaction simple and engaging, while the customizable presets allow users to tailor the timer to their specific workflow. For makers and enthusiasts, it's an excellent open-source project that combines ESP32 microcontroller programming, e-paper display integration, and 3D printing. The project's thoughtful design, including subtle LED feedback and fun \"easter eggs,\" makes productivity both effective and enjoyable.\n\n## Links\n\n*   **GitHub Repository**: <a href=\"https://github.com/Rukenshia/pomodoro\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/Rukenshia/pomodoro</a>\n*   **View on MakerWorld**: <a href=\"https://makerworld.com/de/models/1264318-pomodoro-focus-timer#profileId-1289673\" target=\"_blank\" rel=\"noopener noreferrer\">https://makerworld.com/de/models/1264318-pomodoro-focus-timer#profileId-1289673</a>\n*   **Onshape 3D Model**: <a href=\"https://cad.onshape.com/documents/06055e629740267835bb7660/w/df56eb93ab74e2f4d61e5097/e/21a78536954900200750891?renderMode=0&uiState=67e6e3924368850ba92069f4\" target=\"_blank\" rel=\"noopener noreferrer\">https://cad.onshape.com/documents/06055e629740267835bb7660/w/df56eb93ab74e2f4d61e5097/e/21a78536954900200750891?renderMode=0&uiState=67e6e3924368850ba92069f4</a>\n*   **Inspiration: Focus Dial by Salim Benbouziyane**: <a href=\"https://www.youtube.com/watch?v=nZa-Vqu-_fU\" target=\"_blank\" rel=\"noopener noreferrer\">https://www.youtube.com/watch?v=nZa-Vqu-_fU</a>","metrics":{"detailViews":11,"githubClicks":13},"dates":{"published":null,"modified":"2026-04-02T15:11:39.000Z"}}