macOS

Spann

A focused, local-first macOS time tracker that lives in the menu bar and asks when you go idle.

Problem
Time trackers either get in the way or keep counting after you walk away.
Role
Solo developer
Outcome
Menu-bar timer with honest idle prompts
macOS2026Swift / SwiftUI / WidgetKit
Spann

Built with

SwiftSwiftUIWidgetKitAppKitmacOS

Spann — local-first macOS time tracking

Spann is a native macOS menu-bar timer I built to keep project time close at hand without an account, a browser tab, or a cloud service. You create a project, start tracking, and Spann records the session locally. When the Mac has been idle, it asks whether to keep, remove, pause, or stop that time instead of quietly inventing hours of work.

What I built

  • A menu-bar app with start, pause, resume, switch, and stop controls, plus a live elapsed-time display.
  • Project creation, daily and weekly history, and a seven-day chart of recorded time.
  • Idle detection from keyboard, mouse, trackpad, and scroll events, with an explicit prompt and Input Monitoring permission flow.
  • A small and medium macOS widget that shows the active project and today’s total.
  • A public landing page and unsigned preview download at spann.yared.site, with the source released under MIT.

Why it exists

Most time trackers either take too much setup or keep counting after I leave the keyboard. Spann stays in the menu bar, stores everything on the Mac, and treats idle time as a decision instead of a guess.

Stack

SwiftUI, AppKit, WidgetKit, and local App Group storage. The site is a static page behind Traefik on my VPS.