Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

JARVIS Music

A native Android music player for JioSaavn content β€” part of the JARVIS ecosystem.

Platform Language Min SDK Target SDK Media Backend Release

Built by CodeWithLakxsh


πŸ“¦ Download

Get the latest signed APK from the Releases page:

Download APK

Prefer to build it yourself? Skip ahead to Installation β†’ Build from source.

Overview

JARVIS Music is an Android-first music streaming app that brings a Spotify-style experience to JioSaavn content. It searches and streams songs through a self-hostable JioSaavn API (a Flask + jiosaavn backend included in this repository), with support for offline downloads, liked-song libraries, and custom playlists.

The app is a flagship piece of the JARVIS ecosystem β€” a family of projects by CodeWithLakxsh.

Note: this README is derived entirely from static source analysis. The project has not been runtime-tested for this publication.

Features

All features below are verified directly from the source code:

  • Search & stream β€” search JioSaavn songs via the bundled API (Retrofit + Result endpoint), stream with Media3 / ExoPlayer.
  • Home dashboard β€” trending/mix sections (Hindi, Punjabi, Hip-Hop, Pop, etc.) rendered as a grid and horizontal rows.
  • Mini + full player β€” bottom-sheet player with album art, seek bar, and controls (play/pause, next/prev).
  • Infinite queue β€” when the queue runs low, new songs are auto-fetched and appended; shuffle & repeat modes included.
  • Liked songs β€” heart any track; saved locally in Room.
  • Offline downloads β€” download songs via Android DownloadManager to the app's external music folder; play them back offline.
  • Playlists β€” create playlists, add songs, and play them back.
  • Search history β€” recent queries saved with SharedPreferences.
  • Onboarding β€” pick favourite artists on first launch.
  • Artist profiles β€” open an artist's top tracks from search results.
  • Dark theme β€” always-on dark UI with a Spotify-green accent (#1DB954).

Tech Stack

Layer Technology
Language Kotlin
UI Android Jetpack (AppCompat, Material Components, ViewBinding, ConstraintLayout)
Media Media3 / ExoPlayer
Networking Retrofit 2 + Gson, OkHttp
Image loading Glide
Local storage Room
Concurrency Kotlin Coroutines
Build Gradle (Kotlin DSL) 8.13 Β· AGP 8.11.2 Β· Kotlin 2.0.21
Backend API Python Flask + jiosaavn library

How It Works

The Android app never talks to JioSaavn directly. It calls a JioSaavn API service that wraps the jiosaavn Python package and returns a normalized JSON list of songs. The app's RetrofitInstance points at a deployed instance of that API (configurable in app/src/main/java/com/laksh/jarvismusic/api/RetrofitInstance.kt).

flowchart LR
    U[User on Android] --> A[JARVIS Music App]
    A --> B[Retrofit / OkHttp]
    B --> C[JioSaavn API<br/>Flask + jiosaavn]
    C --> D[JioSaavn<br/>content]
    A --> E[ExoPlayer / Media3]
    A --> F[Room DB<br/>Liked songs Β· Playlists]
    A --> G[DownloadManager<br/>Offline MP3s]
Loading

Project Structure

JarvisMusic/
β”œβ”€β”€ app/                          # Android application module
β”‚   └── src/main/
β”‚       β”œβ”€β”€ java/com/laksh/jarvismusic/
β”‚       β”‚   β”œβ”€β”€ MainActivity.kt   # Player host, queue, mini/full player
β”‚       β”‚   β”œβ”€β”€ HomeFragment.kt   # Dashboard sections
β”‚       β”‚   β”œβ”€β”€ SearchFragment.kt # Search + history
β”‚       β”‚   β”œβ”€β”€ LibraryFragment.kt# Liked / Downloads / Playlists
β”‚       β”‚   β”œβ”€β”€ OnboardingActivity.kt
β”‚       β”‚   β”œβ”€β”€ ArtistProfileActivity.kt
β”‚       β”‚   β”œβ”€β”€ PlaylistsActivity.kt / PlaylistDetailsActivity.kt
β”‚       β”‚   β”œβ”€β”€ LikedSongsActivity.kt / DownloadedSongsActivity.kt
β”‚       β”‚   β”œβ”€β”€ api/              # Retrofit, Room entities & DAOs
β”‚       β”‚   └── *Adapter.kt       # RecyclerView adapters
β”‚       └── res/                  # Layouts, drawables, themes, menus
β”œβ”€β”€ api/                          # Self-hostable JioSaavn API (Python/Flask)
β”‚   β”œβ”€β”€ index.py                  # Flask entry point (port 5100)
β”‚   └── requirements.txt
β”œβ”€β”€ gradle/                       # Gradle wrapper & version catalog
β”œβ”€β”€ build.gradle.kts
β”œβ”€β”€ settings.gradle.kts
└── gradle.properties

Requirements

Inferred from build configuration and dependency manifests β€” not runtime-verified.

  • Android Studio (Iguana or newer) with the Android SDK platform 35.
  • JDK 17 (required by the Gradle configuration).
  • Gradle 8.13 β€” the wrapper is included (gradlew).
  • For the backend API: Python 3.8+ and pip.

Installation

You can either download a pre-built APK or build from source.

Download APK

  1. Download the latest APK from the Releases page.
  2. Open the APK on your Android device (Android 7.0 / API 24+).
  3. If prompted, allow "Install unknown apps" for your browser or file manager, then tap Install.

Build from source

Commands below are derived from the project's configuration and source.

# Clone the repository
git clone https://github.com/CodeWithLakxsh/jarvis-music.git

# Build a debug APK
./gradlew assembleDebug

Alternatively, open the project in Android Studio, let Gradle sync, and press Run.

Backend API

cd api
pip install -r requirements.txt
python index.py        # serves on 0.0.0.0:5100

The Android app expects an API instance at the BASE_URL defined in RetrofitInstance.kt. Point it at a local or deployed instance of api/.

Configuration

Variable Where Purpose
SECRET api/ environment Flask session-signing key. If unset, a random key is generated per process.
BASE_URL RetrofitInstance.kt Base URL of the JioSaavn API the app queries.

See api/.env.example for the backend environment template.

Usage

  • On first launch, choose at least 3 artists to personalise your library.
  • Use Home to browse sections, Search to find any song, and Library to access liked songs, downloads, and playlists.
  • Tap a song to start playback; swipe the player sheet up for the full player with queue, shuffle, and repeat.
  • Tap the heart to like a song, the download icon to save it offline.

Build

The release build type is configured in app/build.gradle.kts (minification disabled, ProGuard rules at app/proguard-rules.pro). Build an APK with:

./gradlew assembleRelease

Security

  • The Flask backend reads its signing key from the SECRET environment variable β€” never commit a real .env file (see .gitignore).
  • Reports for security issues: see SECURITY.md.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md and the issue templates before opening a pull request.

License

No open-source license has currently been granted for this repository.

Author

CodeWithLakxsh

About

Native Android music streaming & downloading app for JioSaavn content - part of the JARVIS ecosystem.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages