GithubHelp home page GithubHelp logo

vaibhav2002 / musicx Goto Github PK

View Code? Open in Web Editor NEW
151.0 1.0 25.0 56.18 MB

MusicX is a music player 🎡 android app built using Kotlin and Jetpack Compose. It follows M.A.D. practices and hence is a good learning resource for beginners

License: MIT License

Kotlin 100.00%
android mvvm-android coroutines room jetpack-compose kotlin coroutines-flow material3 firebase storage

musicx's Introduction

MusicX

MusicX is a music player app made using Jetpack Compose and follows Material 3 guidelines.

Application Install

You can Install and test latest MusicX app from below πŸ‘‡

MusicX

Setup

  • Clone the repository on your machine.
  • Create project in Firebase, enable firestore, set rules to public and download google-services.json and paste in the app folder.
  • Add all your songs in Firestore.
  • Add your AudD api key and base url in Secrets.kt
      const val API_KEY = ""  //add your AudD api key here
      const val BASE_URL = "" //add your AudD base url here
  • I have create a sample music list which i uploaded on Firebase, you can use it , all you need to do is to download the mp3 and upload it on any cloud storage and add the url in the objects in MusicList.kt
    Music(
            id = UUID.randomUUID().toString(),
            title = "Rap God",
            artists = listOf("Eminem"),
            imageUrl = "https://i.scdn.co/image/ab67616d00004851643e6ecebab400d52574e4b2",
            musicUrl = "", // add the url here
            duration = 363000L
        ),

About

It uses Firebase as its backend and also used AudD api to get lyrics of songs.

  • Fully functional.
  • Clean and Simple Material 3 UI built using Jetpack Compose.
  • It supports dark theme too πŸŒ—.

App Features

  • Home Screen - Shows a list of all songs available.
  • Music Player Screen - Music Player screen with music controls.
  • Playlist Screen - Screen showing the current playlist/play queue.

Insights into the app πŸ”Ž

πŸ“Έ Screenshots

Technical details

  • MusicX uses Firebase to fetch all songs.
  • MusicX uses AudD api to get lyrics of songs.
  • MusicX is built fllowing Material 3 Guidelines.
  • MusicX is built using Jetpack Compose.
  • MusicX is made using Kotlin and following Modern Android Development practices.
  • MusicX uses all Jetpack libraries and follows MVVM architecture. It also has a G.O.A.T rating in Android's M.A.D scorecard.
  • MusicX's code follows all the best practices and software development principles which make it a very good learning resource for beginners.

summary.png

Built With πŸ› 

  • Kotlin - First class and official programming language for Android development.
  • Jetpack Compose - Jetpack Compose is Android’s modern toolkit for building native UI.
  • Material 3 - Material Design 3, Google’s most expressive and adaptable design system
  • Coroutines - For asynchronous and more..
  • Flow - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
  • StateFlow - StateFlow is a state-holder observable flow that emits the current and new state updates to its collectors.
  • SharedFlow - A SharedFlow is a highly-configurable generalization of StateFlow.
  • Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • Room - Room is an android library which is an ORM which wraps android's native SQLite database
  • Exoplayer - Exoplayer library is used to play media in Android.
  • Dependency Injection -
    • Hilt-Dagger - Standard library to incorporate Dagger dependency injection into an Android application.
    • Hilt-ViewModel - DI for injecting ViewModel.
  • Backend
    • Firebase
      • Firebase Firestore - A NoSQL database to store all data
      • Firebase Storage - A Cloud storage.
  • AudD Api - Api to fetch lyrics of songs
  • Retrofit - An Http Client for android.
  • Timber - A simple logging library for android.
  • GSON Converter - A Converter which uses Moshi for serialization to and from JSON.
  • Coil - An image loading library for Android backed by Kotlin Coroutines.
  • Material Components for Android - Modular and customizable Material Design UI components for Android.

Package Structure

dev.vaibhav.musicX    # Root Package
.
β”œβ”€β”€ data                    # For data handling.
|   β”œβ”€β”€ local               # Room DB and its related classes
|   β”œβ”€β”€ remote              # Firebase, AudD and their relative classes
β”‚   β”œβ”€β”€ model               # Model data classes and mapper classes, both remote and local entities
β”‚   └── repo                # Single source of data.
|
β”œβ”€β”€ di                      # Dependency Injection             
β”‚   └── module              # DI Modules
|
β”œβ”€β”€exoplayer                # Exoplayer related files etc.
|
β”œβ”€β”€ ui                      # UI/View layer
|   β”œβ”€β”€ components          # Common Composaled required.
|   β”œβ”€β”€ screens             # All Screens in app.    
β”‚   β”œβ”€β”€ theme               # App theme related files.
β”‚   β”œβ”€β”€ usecases            # Use-cases for features.
|   β”œβ”€β”€ utils               # Utility classes for UI.
|
└── utils                   # Utility Classes / Kotlin extensions

Architecture

This app uses MVVM (Model View View-Model) architecture.


If you like my projects and want to support me to build more cool open source projects


Contact

If you need any help, you can connect with me.

Visit:- Vaibhav Jaiswal

musicx's People

Contributors

vaibhav2002 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

musicx's Issues

Using wavy (squiggly) sliders?

Hi,

I'm doing a self-promotion here :)
Please ignore/close this if you are not interested.

Would you like to use the wavy-slider in your app?
I think Android 13 uses this kind of slider for its media controls.

Demo.

Innertube api

Please can u help me build a streaming service like using innertube api I'd like to search for songs

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.