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.