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 GuideAPI & Data
Uses dart_ytmusic_api and youtube_explode_dart for music data. Optional JioSaavn integration. No official API keys required.
View Package DocsProject Architecture
Feature-first module structure with clean separation of concerns.
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.
| Area | Libraries / Tools | Purpose |
|---|---|---|
| Framework | Flutter, Dart | Cross-platform app UI and business logic |
| State & DI | provider, get_it, go_router | State management, dependency injection, navigation |
| Audio Engine | just_audio, audio_service, audio_session, media_kit | Playback, background controls, media session |
| Streaming | dart_ytmusic_api, youtube_explode_dart, jiosaavn | Metadata, stream extraction, alternate source |
| Downloads | dio, flutter_local_notifications | Download pipeline and user notifications |
| Local Media | metadata_god | Local song discovery, tags/artwork extraction |
| Storage | hive_ce, shared_preferences, path_provider | App data persistence and local storage paths |
| UI | easy_localization, google_fonts, dynamic_color, fl_chart | Localization, visuals, animation, charts |
| Platform | smtc_windows, android_intent_plus, permission_handler | Intents, platform controls, permissions |
Build from Source
Clone the repository and run Noize locally in a few commands.
# 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.
Fork the Repository
Click the Fork button on GitHub to create your own copy of the Noize repository.
Create a Feature Branch
git checkout -b feature/AmazingFeature
Make Your Changes
Follow existing code style. Include tests when applicable. Keep commits focused and descriptive.
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.
Ready to contribute?
Jump into the codebase and help us build the best music experience.