{"id":13407042,"url":"https://github.com/SEAbdulbasit/MusicApp-KMP","last_synced_at":"2025-03-14T11:31:03.277Z","repository":{"id":126435903,"uuid":"606695952","full_name":"SEAbdulbasit/MusicApp-KMP","owner":"SEAbdulbasit","description":"This is a music player app built using Compose Multiplatform UI and KMP that works on Android, iOS, Desktop, and Web platforms.","archived":false,"fork":false,"pushed_at":"2024-07-27T16:32:48.000Z","size":5375,"stargazers_count":781,"open_issues_count":2,"forks_count":82,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-07-31T20:26:41.656Z","etag":null,"topics":["android","avplayer","compose","compose-multiplatform","desktop-app","exoplayer","ios","jetbrains","kmp","kotlin-multiplatform","kotlin-multiplatform-mobile","kotlin-multiplatform-sample","mobile-app","multiplatform","multiplatform-app","multiplatform-compose","musicapp","spotify","web","web-app"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SEAbdulbasit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-26T09:32:22.000Z","updated_at":"2024-07-30T20:07:45.000Z","dependencies_parsed_at":"2023-06-17T12:00:12.270Z","dependency_job_id":"e78eaab6-7aa6-446a-bdc9-7785c278701d","html_url":"https://github.com/SEAbdulbasit/MusicApp-KMP","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SEAbdulbasit%2FMusicApp-KMP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SEAbdulbasit%2FMusicApp-KMP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SEAbdulbasit%2FMusicApp-KMP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SEAbdulbasit%2FMusicApp-KMP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SEAbdulbasit","download_url":"https://codeload.github.com/SEAbdulbasit/MusicApp-KMP/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243569316,"owners_count":20312400,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","avplayer","compose","compose-multiplatform","desktop-app","exoplayer","ios","jetbrains","kmp","kotlin-multiplatform","kotlin-multiplatform-mobile","kotlin-multiplatform-sample","mobile-app","multiplatform","multiplatform-app","multiplatform-compose","musicapp","spotify","web","web-app"],"created_at":"2024-07-30T20:00:18.396Z","updated_at":"2025-03-14T11:31:00.036Z","avatar_url":"https://github.com/SEAbdulbasit.png","language":"Kotlin","funding_links":[],"categories":["Multiplatform","Uncategorized","Kotlin","App Projects"],"sub_categories":["Multiplatform samples","Uncategorized"],"readme":"# Music Player App Using Compose Multiplatform KMP\n\nThis is a music player app built using Compose Multiplatform UI that works on Android, iOS, Desktop, and Web\nplatforms. It uses the spotify api for fetching the top 50 charts and getting the trending albums. The Google login is still in pending\nand for now, you need to add the spotify token manually. You can easily hit the endpoint [here](https://developer.spotify.com/documentation/web-api/reference/get-an-album) to get the album\nand then get the token and set in the app.\n\n## Find it on official website of JetBrains\nThis repository has been listed as [KMP sample](https://www.jetbrains.com/help/kotlin-multiplatform-dev/multiplatform-samples.html#:~:text=Android%20and%20iOS-,Music%20App%20KMP,-An%20application%20showcasing) on official website of Jetbrains.\n\n## Live\nYou can find it live [here](https://seabdulbasit.github.io/MusicApp-KMP/)\n\n## Platforms\n\nThe app uses different media players on different platforms:\n\nFor iOS, AVKit is used\nFor Android, Media Player is used\nFor Desktop, VLC media player is used\nFor the Web, an HTML media player is used.\n\n## Integration with Low-Level APIs\n\nOne of the objectives of building this app was to explore how Compose UI interacts with low-level APIs. The experience\nwas challenging yet fun, and the process taught me a lot.\nOut of all the media players used, integrating with the Web Media Player was the easiest. I'm grateful to IceRock\nDevelopment and Aleksey Mikhailov for their demo application, which was a fantastic learning resource.\n\n## Running the app\n\n- Clone this repository:\n\n```\ngit clone https://github.com/SEAbdulbasit/MusicApp-KMP.git\n```\n\n- Open the project in Android Studio or IntelliJ IDEA.\n- Search for **_TOKEN_** file in the code and replace the placeholder with your **Spotify access token**. You can\n  generate a new token from the [Spotify Developer Dashboard](https://developer.spotify.com/console/get-album-tracks/).\n- Run the app on your desired platform.\n  There are a few known issues with the Music Player app using Compose Multiplatform UI:\n\n## Known Issues\n\n- When you click \"Select All\" on Android, Web, and Desktop, the app will autoplay the selected tracks and continue\n  playing the next track when the previous one ends.\n  On iOS, there are issues with the callbacks for `onReady` and `onVideoCompleted`\n  which is causing the player to not start automatically. I was unable to configure the callbacks but hopefully, will be\n  fixing that soon.\n\n## Demo\n\n![Screenshot 2023-03-05 at 4 44 45 PM](https://user-images.githubusercontent.com/33172684/222960302-eccb34b4-d77c-4c95-96af-3d4528323c42.png)\n\n## Repository\n\nTo explore what Compose UI can do, check out the repository for the latest\nupdates: https://github.com/SEAbdulbasit/MusicApp-KMP.\n\nIf you're interested in getting started with Compose Multiplatform, I have a template for you\nhere: https://github.com/SEAbdulbasit/KMP-Compose-Template.\n\nIf you find my work helpful, please consider giving it a ⭐ ❤️.\n\n## Other Projects\n\nTravelApp: https://github.com/SEAbdulbasit/TravelApp-KMP\n\n## Technologies and Libraries Used\n\n- Kotlin\n- Compose Multiplatform UI\n- AVKit Media Player\n- VLC media player\n- HTML media player\n- [Compose Image Loader](https://github.com/qdsfdhvh/compose-imageloader)\n- Decompose\n\nTODO\n-  Add google login\n- Add local db to save favorite playlist\n- Add implementation for recent releases\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSEAbdulbasit%2FMusicApp-KMP","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSEAbdulbasit%2FMusicApp-KMP","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSEAbdulbasit%2FMusicApp-KMP/lists"}