Skip to content
All work

SPT-01 Case study

StopSpoti

Design & Build — Solo

Automated utility that intelligently manages Spotify playback. Detects system audio events to auto-pause music during meetings or videos.

Key outcomes

  • Automatic pause & resume with ownership — never fights manual override
  • Per-app ignore rules, sensitivity and resume-delay settings
  • Snooze controls and a tray-first design that stays out of the way
  • Media-controls adapter with dynamic window fallback
  • 23 automated tests with CI-built installer and portable ZIP
  • Fully local and private: no account, no cloud, no Spotify login

Context

An annoyance-driven build: music blaring over a meeting because Spotify kept playing. StopSpoti watches system audio and pauses the moment something else makes sound — then resumes when it's quiet.

Build

It started in January 2025 as a single-script Tkinter controller that cached Spotify process IDs — fragile, and it showed. In 2026 I rebuilt it from scratch as a modular, tray-first Windows product across 37 commits, now shipping as v2.0.0-beta.1 with an installer and portable ZIP built by CI.

Detail 3

Under the hood, a Windows audio observer samples output sessions on a single worker thread while a pure state machine owns every pause/resume decision: explicit pause ownership, a silence grace period before resume, and a user-override rule that never fights you if you manually hit play. Spotify is driven through Windows media controls first, with dynamic window discovery as fallback — no process IDs cached, no login, no cloud.

Detail 4

The bar I held it to: 23 automated tests plus real Windows audio smoke checks, atomic validated settings with safe-default recovery, rotating local diagnostics, and a strict privacy line — it never captures audio or uploads anything, logs carry process names, never song or video titles.