Skip to content

Repository files navigation

Sonora

Sonora is a cross-platform music and video streaming app built with Flutter. It uses YouTube Music as its data source, offering a rich and customizable experience on Android and Linux desktop.

License: MIT Platform: Android + Linux Total Downloads Latest Release Downloads

Donate

If you enjoy Sonora and want to support its development, a small donation is always appreciated:

Donate with PayPal


Screenshots

Wide (desktop) Tablet Mobile
Home wide Player Home mobile
Settings wide Artist Library mobile

Features

  • YouTube Music streaming — search, browse, and play songs, albums, artists, playlists, and music videos directly from YouTube Music
  • Background playback — keep listening/watching while using other apps, with a persistent notification on Android
  • Audio & Video support — switch between audio-only and video playback seamlessly
  • Android Auto — full driving support with playback controls, browse, and sleep timer
  • Casting — stream audio to Chromecast and DLNA devices (WiFi speakers, Smart TVs)
  • Offline downloads & playback — save songs locally for offline listening with zero-network local playback support
  • Explicit Offline Mode — manual switch to override device network status and browse/play locally cached tracks only
  • Connectivity awareness — global warning banner when offline, automatic connection restoration cues, and friendly network error handling
  • Local library — save favorite songs, albums, artists, and playlists; create custom playlists
  • YouTube Playlist Syncing — import and synchronize remote YouTube Music playlists into local database
  • Smart Playlists (Auto-mixes) — dynamic automatically generated playlists based on listening history (Most Played, Recently Played, Forgotten Favorites)
  • Listening history — track your listened songs
  • Search — search songs, albums, artists, playlists, and music videos
  • 5-Band Equalizer — customize audio gain (-12dB to +12dB) across 5 bands (Bass, Mid-Bass, Mid, Mid-High, High) with pre-built presets managed natively through media_kit FFmpeg audio filters
  • Listening Stats & Sonora Wrapped — offline-first dashboard summarizing total listening time, Top Songs, Top Artists, hourly/weekly listening charts, and a timed Instagram/Spotify-style stories view for sharing your Sonora Wrapped
  • Adaptive UI & Overlays — optimized layouts for mobile, tablet, and wide screens (NavigationBar / NavigationRail / NavigationDrawer). Temporary panels (Equalizer, Casting, Sleep Timer, Sync Panel) adaptively display as centered dialogs on wide desktops and modal bottom sheets on mobile.
  • Themes — light, dark, and AMOLED themes, with Dynamic Color support on Android 12+
  • Crossfade — smooth transitions between songs (configurable duration)
  • Sleep timer — stop playback after a set time
  • Linux desktop — system tray, MPRIS global controls (D-Bus), resizable window
  • Auto-update — automatic update check via GitHub Releases
  • Headless CLI — control Sonora from the terminal: search, play, download, and manage library without the GUI
  • Backup & restore — export and import your local library
  • P2P Local Synchronization — synchronize your music library (likes, playlists, history) peer-to-peer over Wi-Fi between multiple Sonora instances (Android & Linux) without cloud dependencies
  • Localization — Italian and English

Supported Platforms

Platform Status
Android ✅ (API 24+)
Linux ✅ (x64)
Windows ❌ (not planned)
macOS ❌ (not planned)
iOS ❌ (not planned)

Tech Stack

Component Library
Framework Flutter 3.44+
State Management Riverpod 3.x
Navigation go_router 17.x
Local Database Drift (ex Moor)
Media Playback media_kit + audio_service
YouTube Music API dart_ytmusic_api
Stream URL youtube_explode_dart
Casting dart_cast
Themes dynamic_color, palette_generator
Downloads Dio
CLI args 2.x
Notifications flutter_local_notifications

Architecture

Clean Architecture with three layers:

lib/
├── core/          # Constants, themes, utilities, extensions
├── data/          # Data sources (remote YTM, local Drift) + repository implementations
├── domain/        # Models, repository interfaces, use cases
├── presentation/  # Riverpod providers, widgets, screens, router
└── l10n/          # EN / IT localization

Getting Started

Prerequisites

  • Flutter SDK 3.44+ (stable channel)
  • Android Studio (for Android builds)
  • Linux: clang, cmake, ninja, libgtk-3-dev, pkg-config

Build from Source

git clone https://github.com/gmstyle/sonora.git
cd sonora

# Generate Drift code
dart run build_runner build --delete-conflicting-outputs

# Generate localizations
flutter gen-l10n

# Run in debug mode
flutter run

# Android release build
flutter build apk --release

# Linux release build
flutter build linux --release

Headless CLI

curl -fsSL https://raw.githubusercontent.com/gmstyle/sonora/dev/install.sh | bash
sonora search "the beatles" --limit 5

See CLI documentation for all commands and options.


Download

Download the latest release from GitHub Releases:

  • Android: signed APK ready to install
  • Linux: sonora-linux-x64.tar.gz with install scripts

Development

  • CLI documentation — headless terminal usage: search, play, download, library, history
  • Developer documentation — detailed guide on architecture, database, audio engine, and conventions
  • Report bugs or request features via GitHub Issues
  • Pull requests are welcome!

Useful Commands

flutter analyze                                          # Static analysis
flutter test                                             # Run tests
dart run build_runner build --delete-conflicting-outputs  # Regenerate Drift code
flutter gen-l10n                                         # Regenerate localizations

License

Distributed under the MIT License. See LICENSE for more information.

Disclaimer

Sonora is a independent project and is not endorsed by YouTube or Google. Sonora does not collect any personal data or information, it does not host, distribute or sell any copyrighted material. All content is the property of the respective content owners. Sonora is for educational purposes only. The developer not encourage any illegal activity and not responsible for any illegal use of the software.

About

A Flutter music player

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages