Skip to content

Novan-ORG/music_player

Repository files navigation

🎡 Music Player

A beautifully crafted, offline music player built with Flutter that delivers a seamless listening experience. Enjoy your music with playlists, favorites, voice search, and moreβ€”all without internet.

PR Checks Build Artifacts License: MIT


✨ Features

  • 🎡 Local Playback - Play music files directly from your device
  • πŸ“± Intuitive UI - Beautiful, user-friendly interface
  • πŸ” Voice Search - Find songs using voice commands
  • ❀️ Favorites - Save and organize your favorite tracks
  • πŸ“ Playlists - Create and manage custom playlists
  • 🌐 Multi-Language - English & Persian support
  • 🎨 Dark Mode - Easy on the eyes with custom theming
  • πŸ”Š Background Playback - Keep listening while using other apps
  • πŸ“Š Audio Visualization - Watch dynamic waveform animations
  • ⏱️ Sleep Timer - Auto-stop after a set time
  • πŸ”„ Repeat & Shuffle - Control playback modes
  • πŸ“€ Share - Share your favorite songs instantly

πŸ“Έ Screenshots

All Songs Language Mini Player
Music Player Playlist Queue
Sleep Timer Themes

πŸ› οΈ Technologies Used

Framework & Language

  • Flutter (3.8.1+) - Cross-platform mobile development
  • Dart - Programming language

State Management & DI

  • flutter_bloc - BLoC pattern for state management
  • get_it - Service locator and dependency injection
  • equatable - Value equality for objects

Audio Engine

  • just_audio - Audio playback engine
  • audio_service - Background audio handling
  • audio_session - Session management
  • on_audio_query_pluse - Device audio file queries
  • wave_player - Waveform visualization
  • volume_controller - Volume control

UI & UX

  • font_awesome_flutter - Icon library
  • auto_size_text - Responsive text scaling
  • marquee - Text animations
  • scrollable_positioned_list - Advanced scrolling
  • duration_picker - Time selection widget

Utilities

  • speech_to_text - Voice search
  • permission_handler - Runtime permissions
  • shared_preferences - Local storage
  • sentry_flutter - Error tracking

πŸ“ Project Structure

lib/
β”œβ”€β”€ core/                          # Shared logic and resources
β”‚   β”œβ”€β”€ commands/                  # Command pattern
β”‚   β”œβ”€β”€ constants/                 # Global constants
β”‚   β”œβ”€β”€ data/                      # Core data layer
β”‚   β”œβ”€β”€ domain/                    # Business logic
β”‚   β”œβ”€β”€ errors/                    # Error handling
β”‚   β”œβ”€β”€ services/                  # Core services
β”‚   β”œβ”€β”€ theme/                     # Theming
β”‚   β”œβ”€β”€ utils/                     # Helpers
β”‚   └── widgets/                   # Reusable widgets
β”œβ”€β”€ features/                      # Feature modules
β”‚   β”œβ”€β”€ favorite/                  # Favorites management
β”‚   β”œβ”€β”€ home/                      # Home screen
β”‚   β”œβ”€β”€ music_player/              # Player screen
β”‚   β”œβ”€β”€ playlist/                  # Playlist management
β”‚   β”œβ”€β”€ search/                    # Search functionality
β”‚   β”œβ”€β”€ settings/                  # App settings
β”‚   └── songs/                     # Music library
β”œβ”€β”€ injection/                     # Dependency setup
β”œβ”€β”€ localization/                  # Translations
└── main.dart                      # Entry point

πŸ—οΈ Architecture

This project implements Clean Architecture with BLoC pattern:

Layer Purpose
Presentation UI & BLoC state management
Domain Business logic & use cases
Data Repositories & data sources

Key Patterns: BLoC, Repository, Dependency Injection, Command Pattern


πŸš€ Getting Started

Requirements

  • Flutter 3.32.8+
  • Dart 3.8.1+
  • Android Studio / Xcode
  • Physical device or emulator

Setup

  1. Clone the repository

    git clone https://github.com/Novan-ORG/music_player.git
    cd music_player
  2. Install dependencies

    flutter pub get
  3. Configure environment

    # Create .env file
    echo "SENTRY_DSN=your_dsn_here" > .env
  4. Run the app

    flutter run

Build for Production

# Android APK
flutter build apk --release

# Android App Bundle
flutter build appbundle --release

# iOS (Coming Soon)
# flutter build ios --release

Note: Currently optimized for Android. iOS support coming soon.

Permissions

  • Storage - Read audio files
  • Microphone - Voice search (optional)

πŸ“₯ Downloads

Platform Download
GitHub Releases GitHub
CafeBazar CafeBazar
Myket Myket

APK Architectures (from GitHub Releases):

Architecture Download
ARM64 (arm64-v8a) ARM64
ARMv7 (armeabi-v7a) ARMv7
x86 x86
x86_64 x86_64
Universal Universal

All APKs are available in the Releases page.


πŸ“Š Code Quality

# Run analysis
flutter analyze

# Run tests
flutter test

🀝 Contributing

We welcome contributions! Follow these steps:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/YourFeature
  3. Commit changes: git commit -m 'Add YourFeature'
  4. Push to branch: git push origin feature/YourFeature
  5. Open a Pull Request

For detailed contribution guidelines, see CONTRIBUTING.md.


πŸ“„ License

Licensed under the MIT License - see LICENSE for details.


πŸ‘¨β€πŸ’» Author & Contributors

Taleb Rafiepour - GitHub

Contributors:


πŸ™ Acknowledgments

  • Flutter team for the excellent framework
  • All open-source package maintainers

πŸ“ž Support

Found an issue? Open a GitHub issue


Made with ❀️ by NOVAN team using Flutter

About

A feature-rich, open-source music player application built with Flutter.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages