Why Did I Build This?
"Standard productivity timers are easily bypassed and rely entirely on user discipline. I engineered this tool to solve a personal pain point: hyper-focusing and losing track of time during deep development sessions. By injecting low-level keyboard and mouse hooks into the Windows message queue, the app physically forces the user to step away from the computer until the break cycle completes. It is highly effective for engineers or individuals with ADHD or OCD, breaking the hyper-focus loop to prevent cognitive burnout while automatically logging all completed tasks so users can review their productivity history."
Architecture & Decisions
The system is architected across a strict C/C++ language boundary. The frontend is a highly responsive, custom immediate-mode GUI built with Raylib in C, utilizing `pthread` for non-blocking asynchronous asset decoding. The backend persistence layer is written in modern C++, wrapping SQLite3 with full transaction safety and utilizing `spdlog` for systemic logging. To bridge the ABI gap, a bespoke C-wrapper explicitly exposes the C++ database object methods to the C GUI, passing memory-safe structs mapped via a custom doubly linked list implementation.
Key Features
- 01.Hardware-level peripheral locking via Win32 `WH_KEYBOARD_LL` and `WH_MOUSE_LL` global hooks
- 02.Persistent session tracking and historical data logging via SQLite to visualize completed work intervals
- 03.Asynchronous UI and asset loading pipelines using `pthread` to prevent frame drops
- 04.C/C++ interoperability layer exposing modern C++ SQLite transactions to the C frontend
- 05.Failsafe hardware interrupt sequence (`CTRL+ALT+SHIFT+Q`) mapped directly to the keyboard hook