DEV Community

Klik
Klik

Posted on

What a small macOS tracker taught us about privacy boundaries

Pacering is a small open-source macOS productivity tracker from our wider R&D shelf. The interesting part is not another dashboard; it is where the product draws its data boundaries.

Keep the measurement loop understandable

The app is built with SwiftUI and Combine. It uses NSWorkspace to observe active applications, lets the user decide which apps count as work, and keeps the core tracking state in UserDefaults. UI-driven changes are debounced rather than written on every keystroke.

That is a modest architecture, but modest can be good: a user can understand what is measured, choose the relevant applications, set a daily goal, and inspect the resulting history.

Optional intelligence is a separate boundary

The repository also contains an optional GLM-backed analysis path. That distinction matters. “The tracker is local” should not be allowed to blur into “every optional analysis path is local.” Product copy, permissions, and implementation should all make that boundary legible.

Performance work is product work

The current code and README describe debounced persistence, cached window-title lookups, and limiting more expensive inspection to browser applications. Those are small choices, but together they reduce how intrusive a background productivity tool feels.

The broader lesson: privacy is easier to reason about when collection, local persistence, and optional network intelligence are separate decisions—not one vague toggle.

Source and implementation: https://github.com/chengyixu/pacering

Top comments (0)