├── app ├── .gitignore ├── src │ └── main │ │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ └── styles.xml │ │ ├── drawable │ │ │ ├── ic_fork.png │ │ │ ├── git_icon.png │ │ │ ├── ic_arrow_forward.xml │ │ │ ├── ic_arrow_backward.xml │ │ │ ├── ic_star_black.xml │ │ │ └── ic_refresh.xml │ │ ├── navigation │ │ │ └── nav_graph.xml │ │ └── layout │ │ │ ├── activity_main.xml │ │ │ ├── fragment_repo_list.xml │ │ │ ├── fragment_repo_detail.xml │ │ │ └── view_repo_list_item.xml │ │ ├── java │ │ └── com │ │ │ └── ankit │ │ │ └── trendinggit │ │ │ ├── view │ │ │ ├── utils │ │ │ │ └── Constants.kt │ │ │ ├── base │ │ │ │ └── BaseViewModel.kt │ │ │ ├── ui │ │ │ │ ├── MainActivity.kt │ │ │ │ ├── repolist │ │ │ │ │ ├── RepoListViewModel.kt │ │ │ │ │ └── RepoListFragment.kt │ │ │ │ └── repodetail │ │ │ │ │ └── RepoDetailFragment.kt │ │ │ └── adapter │ │ │ │ ├── RepoListAdapter.kt │ │ │ │ └── viewHolders │ │ │ │ └── RepoListViewHolder.kt │ │ │ ├── TrendingGitApp.kt │ │ │ └── model │ │ │ ├── api │ │ │ ├── ApiService.kt │ │ │ └── ApiClient.kt │ │ │ ├── RepoRepository.kt │ │ │ └── ApiResponse.kt │ │ └── AndroidManifest.xml ├── proguard-rules.pro └── build.gradle ├── settings.gradle ├── screenshot ├── s1.png ├── s2.png └── s3.png ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── README.md ├── gradle.properties ├── .gitignore ├── gradlew.bat └── gradlew /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /screenshot/s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ankitbisht/trending-git/HEAD/screenshot/s1.png -------------------------------------------------------------------------------- /screenshot/s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ankitbisht/trending-git/HEAD/screenshot/s2.png -------------------------------------------------------------------------------- /screenshot/s3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ankitbisht/trending-git/HEAD/screenshot/s3.png -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Trending Git 3 | 4 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ankitbisht/trending-git/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_fork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ankitbisht/trending-git/HEAD/app/src/main/res/drawable/ic_fork.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/git_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ankitbisht/trending-git/HEAD/app/src/main/res/drawable/git_icon.png -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008000 4 | #005e00 5 | #008000 6 | 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # trending-git 2 | Trending Git App 3 | 4 | - MVVM (KOTLIN) 5 | - ViewModel 6 | - LiveData 7 | - Navigation Component 8 | - Data binding 9 | 10 | Screen Shots 11 | 12 | ![alt text](screenshot/s1.png) 13 | ![alt text](screenshot/s2.png) 14 | ![alt text](screenshot/s3.png) -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Tue May 07 12:47:37 IST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/ankit/trendinggit/view/utils/Constants.kt: -------------------------------------------------------------------------------- 1 | package com.ankit.trendinggit.view.utils 2 | 3 | class Constants { 4 | companion object { 5 | const val BASE_URL = "https://api.github.com/" 6 | const val REQUEST_TIMEOUT_DURATION = 10 7 | const val DEBUG = true 8 | } 9 | } -------------------------------------------------------------------------------- /app/src/main/java/com/ankit/trendinggit/TrendingGitApp.kt: -------------------------------------------------------------------------------- 1 | package com.ankit.trendinggit 2 | 3 | import android.app.Application 4 | 5 | class TrendingGitApp : Application() { 6 | 7 | override fun onCreate() { 8 | super.onCreate() 9 | instance = this 10 | } 11 | 12 | companion object { 13 | lateinit var instance: TrendingGitApp 14 | } 15 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_forward.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_backward.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/java/com/ankit/trendinggit/model/api/ApiService.kt: -------------------------------------------------------------------------------- 1 | package com.ankit.trendinggit.model.api 2 | 3 | import com.ankit.trendinggit.model.GitResponse 4 | import retrofit2.Call 5 | import retrofit2.http.GET 6 | import retrofit2.http.Query 7 | 8 | interface ApiService { 9 | 10 | @GET("search/repositories") 11 | fun getRepo(@Query("q") search: String = "trending", @Query("sort") sort: String = "stars"): Call 12 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_star_black.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 30dp 3 | 4 | 5 | 25dp 6 | 20dp 7 | 10dp 8 | 5dp 9 | 10 | 11 | 20sp 12 | 18sp 13 | 16sp 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/ankit/trendinggit/view/base/BaseViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.ankit.trendinggit.view.base 2 | 3 | import androidx.lifecycle.MutableLiveData 4 | import androidx.lifecycle.ViewModel 5 | import com.ankit.trendinggit.TrendingGitApp 6 | 7 | open class BaseViewModel : ViewModel() { 8 | 9 | val empty = MutableLiveData().apply { value = false } 10 | 11 | val dataLoading = MutableLiveData().apply { value = false } 12 | 13 | val toastMessage = MutableLiveData() 14 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_refresh.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 15 | 16 |