🎵 Deep Dive · Intermediate

Spotube: a privacy-minded Flutter music client

Spotube proves you can ship a polished music experience across mobile and desktop from one Flutter codebase — without owning the catalog backend.

Diagram: Spotube Architecture

Stack signals

  • Riverpod for state and DI.
  • drift for durable local library data.
  • media_kit (and related plugins) for playback across platforms.
  • Store releases including F-Droid/Flathub — packaging is part of the product.

What to steal

  1. Separate catalog search from local library state.
  2. Make playback a headless service with a thin UI shell.
  3. Persist queue and position — music apps are resumed constantly.

Pitfalls

  • Platform audio APIs differ wildly (background modes, lock screens, Bluetooth).
  • Legal/ToS constraints around third-party catalogs are not a Flutter problem, but they will kill the app faster than a jank frame.

Use Spotube as a map of the plugin surface a real media app needs.

#Flutter#OpenSource#Music#Riverpod