Knowledge Hub

Monolith — A Production Flutter Music Player

Delivery case studyBy Naveed Sohail Gung2026-06-02Flutter 3.44Dartyoutube_explode_dartjust_audio

A self-contained offline music player for iOS and Android built entirely in Flutter, with a CI/CD pipeline that ships an unsigned IPA on every commit in under three minutes. Most music apps are streaming-first: they require a subscription, a stable connection, and surrender your listening data. I wanted something...

Problem context

Most music apps are streaming-first: they require a subscription, a stable connection, and surrender your listening data. I wanted something that lets you download audio once and own it completely — no ads, no tracking, and no internet needed after the fact. The app also had to run on both iOS and Android from a single Dart codebase, with a CI pipeline I could trust to catch regressions on every push. Three...

Implementation approach

Built the entire UI and business logic once in Flutter, isolating platform differences to three places: directory paths (Android external storage vs the iOS sandbox), runtime permissions, and the CocoaPods setup.

Implementation approach (2)

Used youtube explode dart to talk to YouTube’s InnerTube API directly from the device — the app fetches the audio manifest, picks the best audio-only stream, and writes an .m4a/.opus file locally, with no backend server anywhere in the path.

Outcome and delivery impact

Monolith ships a public APK via GitHub Releases and an unsigned, sideloadable IPA built fresh on every commit. The warm-cache iOS build stabilised below three minutes after the caching rework, down from over ten. The Flutter 3.44 icon cascade is fully resolved through checked-in CI patches, so both platforms build green from a single Dart codebase. Downloads now land in storage the system Files app can actually navigate to, and audio plays back offline...

Reported metrics

Technologies involved

  • Flutter 3.44
    Open the technology archive to view related project work.
  • Dart
    Open the technology archive to view related project work.
  • youtube_explode_dart
    Open the technology archive to view related project work.
  • just_audio
    Open the technology archive to view related project work.
  • audio_service
    Open the technology archive to view related project work.
  • sqflite
    Open the technology archive to view related project work.
  • path_provider
    Open the technology archive to view related project work.
  • GitHub Actions
    Open the technology archive to view related project work.