Tech Stack

Built with Flutter 3.x and Dart, using Material Design 3 for the UI. State management with Provider and DI via get_it.

Project Structure

Feature-first architecture with core, features, and shared layers. Services registered via get_it for easy DI and testing.

Contributing

We welcome contributions! Fork the repo, create a feature branch, and submit a pull request. Follow the existing code style and include tests.

Read Contribution Guide

API & Data

Uses dart_ytmusic_api and youtube_explode_dart for music data. Optional JioSaavn integration. No official API keys required.

View Package Docs

Project Architecture

Feature-first module structure with clean separation of concerns.

Project Structure
noize/
├── android/                     # Android build and platform code
├── linux/                     # Linux build and platform code
├── windows/                     # Windows runner and packaging config
├── assets/
│   ├── images/                  # App images and artwork
│   └── translations/            # Localization JSON files
├── lib/
│   ├── core/                    # Shared services, providers, models, constants
│   ├── features/                # Feature-first modules (player, search, settings…)
│   ├── shared/                  # Shared widgets, components, and animations
│   ├── generated/               # Generated files
│   └── main.dart                # App entry point
├── test/                        # Widget/unit tests
└── pubspec.yaml                 # Dependencies and project metadata

Feature Map

Every major feature implemented in the codebase, organized by category.

🎵

Streaming & Discovery

  • Stream songs, albums, artists, playlists, and videos from YouTube Music and Youtube
  • Optional JioSaavn integration for alternate/high-quality source
  • Country-aware Trending feed
  • Home sections: recently played, liked songs, favorite artists, recent playlists
🔍

Search & Navigation

  • Fast search with suggestions and search history
  • Grouped results by Songs, Albums, Artists, Playlists, Videos
  • In-list search delegates for library and playlist screens
▶️

Playback Experience

  • Background playback with media session integration
  • Queue: add, play next, reorder, clear
  • Shuffle, repeat, speed, volume controls
  • Video mode support and Windows SMTC integration
⬇️

Downloads & Offline

  • Download songs or full playlists with concurrent queue
  • Configurable download quality
  • Embedded metadata/artwork handling
  • Dedicated downloads screen for offline playback
📁

Local Library

  • Scan and play local audio files from device storage
  • Manage included/excluded folders and extensions
  • Minimum duration filters and permission handling
🎤

Lyrics

  • Multiple providers: YouTube Music, LRCLib, AI
  • AI lyric generation via Gemini/OpenAI (API key configurable)
  • Synchronized and plain lyrics, seek-to-line support
🎛️

Audio Controls

  • Built-in equalizer with presets and custom tuning
  • Streaming and download quality settings
  • Audio output selection support
🎨

Customization

  • Light, Dark, and System theme modes
  • Adaptive/dynamic accent color and manual picker
  • Player background animations (multiple styles)
  • 14 languages supported
🔄

OTA Updates

  • In-app update checking with stable/beta channels
  • Release notes, progress, ETA, and install flow
  • Supports optional mandatory updates
🛠️

Data & Settings

  • Export/import settings and app data
  • Granular clear actions (cache, stats, queues, logs, playlists)
  • AI provider and key management

Detailed Tech Stack

Core libraries and tools powering Noize.

AreaLibraries / ToolsPurpose
FrameworkFlutter, DartCross-platform app UI and business logic
State & DIprovider, get_it, go_routerState management, dependency injection, navigation
Audio Enginejust_audio, audio_service, audio_session, media_kitPlayback, background controls, media session
Streamingdart_ytmusic_api, youtube_explode_dart, jiosaavnMetadata, stream extraction, alternate source
Downloadsdio, flutter_local_notificationsDownload pipeline and user notifications
Local Mediametadata_godLocal song discovery, tags/artwork extraction
Storagehive_ce, shared_preferences, path_providerApp data persistence and local storage paths
UIeasy_localization, google_fonts, dynamic_color, fl_chartLocalization, visuals, animation, charts
Platformsmtc_windows, android_intent_plus, permission_handlerIntents, platform controls, permissions

Build from Source

Clone the repository and run Noize locally in a few commands.

Terminal
# Clone the repository
git clone https://github.com/anandssm/noize.git
cd noize

# Install dependencies
flutter pub get

# Run on connected device / emulator
flutter run

# Build release APK
flutter build apk --release

# Build Windows executable
flutter build windows --release

# Build Linux executable
flutter build linux --release

Requirements

Development Tools

Flutter SDK 3.19+ · Dart 3.3+ · Android Studio or VS Code with Flutter extension · Git

Platform SDKs

Android SDK (API 23+) for Android · Visual Studio (C++ Desktop workload) for Windows · Linux build tools (clang, cmake, ninja-build, pkg-config, libgtk-3-dev) for Linux

How to Contribute

Follow these steps to start contributing to Noize.

1

Fork the Repository

Click the Fork button on GitHub to create your own copy of the Noize repository.

2

Create a Feature Branch

git checkout -b feature/AmazingFeature

3

Make Your Changes

Follow existing code style. Include tests when applicable. Keep commits focused and descriptive.

4

Push & Open a Pull Request

git push origin feature/AmazingFeature — then open a PR on GitHub for review.

Credits & Acknowledgments

Noize stands on the shoulders of many open-source maintainers.

⚖️

GPL-3.0 License

Noize is licensed under the GNU General Public License v3. The source code is free to use, modify, and distribute under the same license terms.

Ready to contribute?

Jump into the codebase and help us build the best music experience.