VIVI Music is an open-source community project and welcomes contributions of all kinds — bug fixes, new features, translations, documentation improvements, and design feedback. Before you open a pull request or file an issue, take a few minutes to read these guidelines so your contribution lands smoothly.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/vivizzz007/vivi-music/llms.txt
Use this file to discover all available pages before exploring further.
How to Contribute Code
Contributing code follows the standard GitHub fork-and-pull-request workflow:Fork the repository
Visit https://github.com/vivizzz007/vivi-music and click Fork. This creates your own copy of the repository under your GitHub account.
Create a feature branch
Work on a dedicated branch named after the feature or fix you are implementing. Never commit directly to
main.Commit your changes
Write clear, descriptive commit messages. Each commit should represent a single logical change.
Bug Reports & Feature Requests
GitHub Issues
File bug reports with steps to reproduce, your Android version, VIVI Music version, and build flavour (FOSS or GMS).
GitHub Discussions
Propose new features, ask questions, or share feedback in an open forum before filing a formal issue.
Telegram Community
Join the Telegram group for real-time community discussion, announcements, and support from other VIVI Music users.
GitHub Releases
Download the latest release APKs and read release notes before filing a bug to confirm you are on the current version.
Attribution Rules for Forks and Derivative Works
VIVI Music contains two integrations — the Musixmatch lyrics scraper and the JioSaavn audio streaming module — that were developed specifically for this project. If your own application copies, adapts, or reuses the logic from either integration, you must follow the attribution rules below in addition to the GPL-3.0 licence requirements.Rule 1 — Musixmatch Lyrics Integration
Rule 1 — Musixmatch Lyrics Integration
If you reuse the Musixmatch lyrics scraping or signature logic from VIVI Music:Documentation & source headers
You must state in your repository’s documentation (for example,
README.md or an ATTRIBUTIONS file) and in relevant source file headers that the Musixmatch scraping logic was obtained from Vivi Music.UI attribution
You must clearly display attribution inside your application’s UI — for example, on the lyrics viewer or the lyrics settings screen. The provider label must read vivimusic lyrics provider, or otherwise specify that the lyrics are powered or provided by Vivi Music.Rule 2 — JioSaavn Audio Streaming Integration
Rule 2 — JioSaavn Audio Streaming Integration
If you reuse the JioSaavn audio streaming, search, or audio decryption logic from VIVI Music:Documentation & source headers
You must state in your repository’s documentation and in relevant source file headers that the JioSaavn streaming logic was obtained from Vivi Music.UI attribution
You must clearly display attribution inside your application’s UI — for example, on the stream quality selection or audio source settings screen. The source label must read
JioSaavn (via vivimusic), or otherwise specify that the streaming service is powered by Vivi Music.Rule 3 — General GPL-3.0 Open Source Requirement
Rule 3 — General GPL-3.0 Open Source Requirement
VIVI Music is licensed under the GNU General Public License v3.0. Any project that copies, modifies, or incorporates this code must comply fully with the GPL-3.0 terms, which include:
- Releasing source code — your project must be fully open-sourced under the GPL-3.0 licence.
- No proprietary forks — you cannot incorporate VIVI Music code into a closed-source or proprietary application.
- Preserving licence notices — you must retain all existing copyright and licence notices in any files you copy or modify.
LICENSE file.Code Style & Quality Guidelines
- Follow standard Kotlin coding conventions and use the project’s existing formatting style.
- Do not add telemetry, analytics, or trackers of any kind. VIVI Music is a privacy-first application.
- If you add a new settings preference, define its key in
constants/PreferenceKeys.ktfollowing the existing naming convention. - UI changes must follow Material 3 guidelines and use the existing
Material3SettingsGroup/Material3SettingsItemcomponents where applicable. - Test your changes on both the
fossandgmsbuild variants when the change touches code that differs between them (for example, anything gated onBuildConfig.CAST_AVAILABLE).
Licence
VIVI Music is released under the GPL-3.0 licence. SeeLICENSE for the full licence text.