Android Kotlin Starter is a starter project which implements MVVM Pattern.
It includes libraries
- RxJava2 and RxAndroid and RxKotlin
- Retrofit / OkHttp
- Gson
- Dagger 2
- Timber
- Crashlytics
- Picasso
- Anko
- Coroutines
- Android Jetpack Architecture Components
- Espresso for UI tests
You can choose which library you want to include in your project
1. Install python
2. Install pip
3. pip install cookiecutter
Scaffold your project:
cookiecutter https://github.com/cong91/Kotlin_Android_MVVM_BolierPlate.git
.
├── app
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ ├── androidTest
│ │ └── java
│ │ └── ApplicationTest.kt
│ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ ├── App.kt
│ │ │ ├── core
│ │ │ │ ├── BaseActivity.kt
│ │ │ │ ├── BaseAdapter.kt
│ │ │ │ ├── BaseDiffCallback.kt
│ │ │ │ ├── BaseEntity.kt
│ │ │ │ ├── BaseFragment.kt
│ │ │ │ ├── BasePagedListAdapter.kt
│ │ │ │ ├── BaseViewHolder.kt
│ │ │ │ ├── BaseViewModel.kt
│ │ │ │ ├── Dummy.kt
│ │ │ │ ├── ViewModelFactory.kt
│ │ │ │ ├── api
│ │ │ │ │ ├── ApiResponse.kt
│ │ │ │ │ ├── LiveDataCallAdapter.kt
│ │ │ │ │ ├── LiveDataCallAdapterFactory.kt
│ │ │ │ │ ├── NetworkBoundResource.kt
│ │ │ │ │ ├── RateLimiter.kt
│ │ │ │ │ ├── Resource.kt
│ │ │ │ │ └── Status.kt
│ │ │ │ └── recyclerview
│ │ │ │ ├── BaseViewAdapter.kt
│ │ │ │ ├── BindingViewHolder.kt
│ │ │ │ ├── MultiTypeAdapter.kt
│ │ │ │ └── SingleTypeAdapter.kt
│ │ │ ├── db
│ │ │ │ ├── AppDatabase.kt
│ │ │ │ ├── dao
│ │ │ │ │ ├── ExampleDao.kt
│ │ │ │ │ └── PostDao.kt
│ │ │ │ └── entities
│ │ │ │ ├── Example.kt
│ │ │ │ └── Post.kt
│ │ │ ├── di
│ │ │ │ ├── component
│ │ │ │ │ └── ApplicationComponent.kt
│ │ │ │ ├── module
│ │ │ │ │ ├── ApplicationModule.kt
│ │ │ │ │ ├── DatabaseModule.kt
│ │ │ │ │ ├── NetModule.kt
│ │ │ │ │ ├── ViewModelKey.kt
│ │ │ │ │ └── ViewModelModule.kt
│ │ │ │ └── scope
│ │ │ │ └── ActivityScope.kt
│ │ │ ├── network
│ │ │ │ ├── PostApi.kt
│ │ │ │ └── PostRepository.kt
│ │ │ ├── ui
│ │ │ │ ├── list
│ │ │ │ │ ├── PostListActivity.kt
│ │ │ │ │ └── PostListViewModel.kt
│ │ │ │ ├── login
│ │ │ │ │ ├── LoginActivity.kt
│ │ │ │ │ ├── LoginViewModel.kt
│ │ │ │ │ ├── RegisterActivity.kt
│ │ │ │ │ └── RegisterViewModel.kt
│ │ │ │ ├── main
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ └── MainActivityViewModel.kt
│ │ │ │ └── splash
│ │ │ │ └── SplashActivity.kt
│ │ │ └── utils
│ │ │ ├── BindingAdapters.kt
│ │ │ ├── extensions
│ │ │ │ ├── ActivityExt.kt
│ │ │ │ ├── AnyExt.kt
│ │ │ │ ├── ContextExt.kt
│ │ │ │ ├── FragmentExt.kt
│ │ │ │ └── ViewExt.kt
│ │ │ ├── service
│ │ │ │ └── CallbackWrapper.kt
│ │ │ └── timber
│ │ │ └── CrashReportTree.kt
│ │ └── res
│ │ ├── drawable
│ │ │ ├── android_starter.png
│ │ │ ├── bg_input_cursor.xml
│ │ │ ├── bg_input_cursor_2.xml
│ │ │ ├── bt_shape.xml
│ │ │ ├── bt_shape_2.xml
│ │ │ ├── selector_bg_edit.xml
│ │ │ ├── selector_bg_edit_2.xml
│ │ │ ├── splash_logo.xml
│ │ │ └── state_list_animator_z.xml
│ │ ├── drawable-xxxhdpi
│ │ │ ├── plus.png
│ │ │ └── plus_x.png
│ │ ├── layout
│ │ │ ├── activity_login.xml
│ │ │ ├── activity_main.xml
│ │ │ ├── activity_post_list.xml
│ │ │ ├── activity_register.xml
│ │ │ ├── item_post.xml
│ │ │ └── simple_place_holder.xml
│ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── transition
│ │ │ └── fabtransition.xml
│ │ ├── values
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ ├── values-v21
│ │ │ └── styles.xml
│ │ └── values-w820dp
│ │ └── dimens.xml
│ └── test
│ └── java
│ └── ExampleUnitTest.kt
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
43 directories, 99 files