The Objective
The objective was simple: eliminate the friction of time tracking. Constantly opening a browser, navigating to ProofHub, and manually starting timers for different projects was a tiresome break in workflow. I built this macOS menu bar app to bring active tasks directly to my fingertips.
Technical Hurdles
- Concurrent Tracking: Syncing and playing multiple timers simultaneously across different tasks.
- State Management: Handling complex hierarchies of multiple projects and their respective task lists.
- Data Consistency: Ensuring offline tracking synced perfectly back to the cloud without dropping seconds.
Under the Hood
AppState is the single source of truth for every running timer. SwiftData caches projects and tasks for instant browsing; nothing reaches ProofHub's Bolt API until a timer is explicitly saved.
Engineering Deep Dive
macOS Native Development
Swift & SwiftUI
Built from the ground up using Swift to ensure the app is a lightweight, first-class citizen on macOS, seamlessly integrating into the system menu bar without the memory overhead of web wrappers.
High-Performance Caching
SwiftData Store
To eliminate network latency when browsing through multiple projects and their respective task lists, I implemented a robust caching strategy using SwiftData. This ensures the UI is always instantly responsive.
Concurrent Timer Synchronization
State Management
Handling the complexity of a user rapidly switching between tasks or running multiple timers simultaneously required an iron-clad local state engine that precisely synced elapsed seconds before pushing to the ProofHub Bolt APIs.
Key Takeaways
As my first dedicated macOS application, ProofHub Task Timer was an incredible deep-dive into the Apple ecosystem. I learned how to build robust, native macOS architectures using Swift, and gained a deep appreciation for the power of SwiftData as a local caching engine for complex, concurrent data syncing.
