What you are building
Soundquarry is a media player you assemble in twelve short stages. The teaching stack is PyQt (Python 3, PySide6, local audio files). By the end you should understand the shell, the data you persist, and the everyday workflows people expect from this kind of app.
PySide6 exposes Qt Multimedia so you can teach play/pause/seek without building a decoder. Playlists stay ordinary Python data.
Transport buttons, a slider, and a track list are natural QWidgets. Keep the player object on the window so signals stay wired.
Work in order. Early folders are intentionally small so you can see the window (or server) boot before features pile on. From the data-layer part onward, each snapshot should still run after you install dependencies.
Read the goal, clone the matching GitHub folder, run it, then skim the code against the notes below. If something fails, fix the run path first—most “bugs” on day one are the wrong directory or a skipped install.
Parts in order
Each chapter below is one checkpoint. Open a part when you are ready for that feature—not all at once.