A modern, open-source music streaming application for Android
Built with Kotlin and Jetpack Compose, Weasel leverages the NewPipe Extractor to provide a seamless listening experience without subscriptions. Discover, stream, and download your favorite music with a clean, intuitive interface designed for performance and user experience.
- ๐ Instant Search: Lightning-fast search across tracks, artists, and playlists
- ๐ต High-Quality Streaming: Automatically fetches the best available audio streams
- ๐ Background Playback: Seamless background audio with rich media notifications
- ๐๏ธ Endless Queue: Smart auto-queuing of related tracks for continuous discovery
- ๐พ Local Music Integration: Automatic scanning and integration of device audio files
- ๐ Playlist Creation: Create and manage custom playlists effortlessly
- โฌ๏ธ Download Functionality: Download any track for offline enjoyment
- โจ Material 3 Theme: Tailored for modern Android experiences**:
Weasel follows a scalable, maintainable architecture pattern with clear separation of concerns:
๐ฆ weasel/
โโโ ๐ data/ # Data layer
โ โโโ ๐ local/ # Room Database components
โ โ โโโ AppDatabase.kt
โ โ โโโ MusicDao.kt
โ โ โโโ entities/
โ | # Network data sources
โ โโโ Track.kt # Data models
โ โโโ Playlist.kt
โ โโโ DownloadWorker.kt # Background download logic
โโโ ๐ di/ # Dependency Injection
โ โโโ ViewModelFactory.kt
โโโ ๐ player/ # Media3 playback components
โ โโโ MusicPlayerService.kt
โโโ ๐ repository/ # Data repositories
โ โโโ LocalMusicRepository.kt
โ โโโ NewPipeMusicRepository.kt
โโโ ๐ ui/ # UI resources and themes
โ โโโ ๐ theme/
โ โโโ ๐ resources/
โโโ ๐ util/ # Utility classes
โ โโโ AppConnectivityManager.kt
โโโ ๐ ux/ # Jetpack Compose screens
โ โโโ HomeScreen.kt
โ โโโ NowPlayingScreen.kt
โ โโโ PlaylistScreen.kt
โ โโโ components/
โโโ ๐ viewmodel/ # ViewModels
โโโ HomeViewModel.kt
โโโ MusicPlayerViewModel.kt
โโโ PlaylistViewModel.kt
- Android Studio (latest stable version)
- Android SDK 24+ (API level 24 and above)
- Kotlin 2.0.0
-
Clone the repository
git clone https://github.com/Najaf-Ali-Imran/weasel.git cd weasel -
Open in Android Studio
- Launch Android Studio
- Select "Open an existing Android Studio project"
- Navigate to the cloned directory and select it
-
Sync and Build
- Let Gradle sync and download dependencies
- Build the project (
Build > Make Project)
-
Run the App
- Connect an Android device or start an emulator
- Click the "Run" button or press
Shift + F10
| Category | Technology |
|---|---|
| Language | |
| UI Framework | |
| Architecture | |
| Database | |
| Media Playback | |
| Networking | |
| Background Tasks | |
| Concurrency |
Released: 7-21-2025 What's New:
- โ Light/Dark Mode
- โ Enhanced Performance
- โ Improved Library
Download: v0.1.2
Found a bug or have a feature request?
๐ Report it here
Step 1: Fork & Clone
git fork https://github.com/Najaf-Ali-Imran/weasel.git
git clone https://github.com/Najaf-Ali-Imran/weasel.git
cd weaselStep 2: Create a Branch
git checkout -b feature/amazing-new-feature
# or
git checkout -b fix/critical-bug-fixStep 3: Make Your Changes
- Follow the existing code style and architecture
- Write meaningful commit messages
- Test your changes thoroughly
- Add documentation if needed
Step 4: Submit a Pull Request
- Push your branch to your fork
- Open a Pull Request against the
mainbranch - Provide a clear title and detailed description
- Link any relevant issues
- Follow Android Kotlin Style Guide
- Use meaningful variable and function names
- Add comments for complex logic
- Keep functions small and focused
- Write unit tests for new features
Offline-First Architecture: The app prioritizes local downloaded files over streaming when available, ensuring optimal performance and data usage.
Endless Queue Implementation: Uses onMediaItemTransition events to dynamically fetch and append related tracks, creating a seamless listening experience.
Privacy-Focused: All user data (playlists, history) is stored locally. No personal information is transmitted to external servers.
- Lazy Loading: UI components load content on-demand
- Efficient Caching: Smart caching strategies for images and metadata
- Background Processing: Heavy operations run on background threads
- Memory Management: Proper lifecycle handling to prevent memory leaks
This project is licensed under the License - see the LICENSE file for details.





