{"id":13773596,"url":"https://github.com/fevziomurtekin/DeezerClone","last_synced_at":"2025-05-11T05:34:59.887Z","repository":{"id":49992667,"uuid":"298590204","full_name":"fevziomurtekin/DeezerClone","owner":"fevziomurtekin","description":"This Application using Dagger Hilt, Coroutines, Flow, Jetpack (Room, ViewModel, LiveData),Navigation based on MVVM architecture. ","archived":false,"fork":false,"pushed_at":"2022-11-26T15:35:10.000Z","size":15613,"stargazers_count":95,"open_issues_count":6,"forks_count":10,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-17T08:44:25.423Z","etag":null,"topics":["android","coroutine","coroutines","databind","flow","jetpack","kotlin","kotlin-serialization","livedata","mockito-kotlin","mockk","mvvm","navigation","retorofit2","robolectric","room","viewmodel"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fevziomurtekin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-25T14:05:35.000Z","updated_at":"2024-06-19T02:23:56.000Z","dependencies_parsed_at":"2023-01-23T08:31:21.937Z","dependency_job_id":null,"html_url":"https://github.com/fevziomurtekin/DeezerClone","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fevziomurtekin%2FDeezerClone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fevziomurtekin%2FDeezerClone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fevziomurtekin%2FDeezerClone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fevziomurtekin%2FDeezerClone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fevziomurtekin","download_url":"https://codeload.github.com/fevziomurtekin/DeezerClone/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253523688,"owners_count":21921815,"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","coroutine","coroutines","databind","flow","jetpack","kotlin","kotlin-serialization","livedata","mockito-kotlin","mockk","mvvm","navigation","retorofit2","robolectric","room","viewmodel"],"created_at":"2024-08-03T17:01:17.682Z","updated_at":"2025-05-11T05:34:54.863Z","avatar_url":"https://github.com/fevziomurtekin.png","language":"Kotlin","funding_links":[],"categories":[":art: Pattern"],"sub_categories":["MVVM"],"readme":"\u003ch1 align=\"center\"\u003eDeezer Clone\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/fevziomurtekin/DeezerClone/actions\"\u003e\u003cimg alt=\"Build Status\" src=\"https://github.com/fevziomurtekin/DeezerClone/workflows/Android%20CI/badge.svg\"/\u003e\u003c/a\u003e \n \u003ca href=\"https://github.com/fevziomurtekin/DeezerClone/releases/\"\u003e\u003cimg alt=\"GitHub release (latest by date)\" src=\"https://img.shields.io/github/v/release/fevziomurtekin/DeezerClone?style=plastic\"\u003e\u003c/a\u003e\n\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e  \n Deezer Clone application, Dagger Hilt, Coroutines, Flow, Jetpack (Room, ViewModel,Navigation LiveData) based on MVVM architecture. Also fetching data from the network and integrating local data in the database via repository pattern.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"/art/banner.png\"/\u003e\n\u003c/p\u003e\n\n## APK\nClick and go to releases page [Releases](https://github.com/fevziomurtekin/DeezerClone/releases/) to download the latest APK.\n\n\n## Tech stack - Library\n- [Kotlin](https://kotlinlang.org/) , [Coroutines](https://github.com/Kotlin/kotlinx.coroutines) , [Flow](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/)\n- [Dagger-Hilt](https://developer.android.com/training/dependency-injection/hilt-android)\n- [Kotlin-DSL](https://docs.gradle.org/current/userguide/kotlin_dsl.html)\n- JetPack\n  - [LiveData](https://developer.android.com/topic/libraries/architecture/livedata) \n  - [Lifecycle](https://developer.android.com/jetpack/androidx/releases/lifecycle) \n  - [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) \n  - [Room](https://developer.android.com/topic/libraries/architecture/room)\n  - [Navigation](https://developer.android.com/guide/navigation/navigation-getting-started)\n  - [Data Binding](https://developer.android.com/topic/libraries/data-binding)\n  - [MVVM Architecture]() (View - DataBinding - ViewModel - Model)\n  - Repository pattern\n- [Retrofit2 \u0026 OkHttp3](https://github.com/square/retrofit)\n- [Gson](https://github.com/google/gson)\n- [Timber](https://github.com/JakeWharton/timber)\n- [Material-Components](https://github.com/material-components/material-components-android)\n- [Coil](https://github.com/coil-kt/coil)\n- [ShimmerLayout](http://facebook.github.io/shimmer-android/)\n- [Detekt](https://detekt.github.io/detekt/)\n- Test\n  - [mockK](https://mockk.io/)\n  - [Mock Server](https://www.mock-server.com/)\n  - [Robolectric](http://robolectric.org/)\n  - [Mockito Kotlin](https://github.com/nhaarman/mockito-kotlin)\n  - [Turbine](https://cashapp.github.io/turbine/docs/0.x/turbine/)\n  - [Junit](https://junit.org/junit5/)\n  - [Navigation/Deeplink Test](https://github.com/android/architecture-components-samples/tree/main/NavigationAdvancedSample)\n\n## Architecture\nDeezerClone is based on MVVM architecture and a repository pattern.\n\n![architecture](https://raw.githubusercontent.com/fevziomurtekin/hackernewsapp/master/screenshot/mvvm.png)\n\n## Detekt\nA static code analysis tool for the Kotlin programming language. It operates on the abstract syntax tree provided by the Kotlin compiler.\nYou can check the code by running the this command.\n\n```properties\n  ./gradlew detektDeezer\n``` \n\n## API\nUsed Deezer API. Deezer API provides a RESTful API. [Link](https://developers.deezer.com/api/)\n\n## MAD Scorecard\n\n\u003ca href=\"https://madscorecard.withgoogle.com/scorecard/share/3185391510/#summary\"\u003e \u003cb\u003e DeezerClone's MAD scorecard. \u003c/b\u003e \u003c/a\u003e\n\n## Roadmap\n- [x] Media player will be created using Exoplayer.\n- [x] Favorites page will be created.\n- [x] Application will be testing and is out new release.\n- [x] Base repository will created.\n- [x] UI test will be writed.\n- [ ] Will be migrate to MVVM to MVI\n- [ ] Will be migrate to Jetpack Compose\n\n## License\nThe Apache License 2.0 - see [`LICENSE`](LICENSE) for more details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffevziomurtekin%2FDeezerClone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffevziomurtekin%2FDeezerClone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffevziomurtekin%2FDeezerClone/lists"}