MVVMTemplate 🧞
A simple Android template that lets you create an Android project quickly.
How to use 👣
Just click on button to create a new repo starting from this template.
Compose version ⭐
For the compose version, which is under development, switch to feature/compose branch.
Features 🕹
- 100% Kotlin-only template
- Following Clean Architecture approach
- Following MVVM Architectural Design Pattern
- Template Project
- RxJava 3 - Reactive Extensions for the JVM
- Coroutines - A concurrency design pattern library
- Flow - Built on top of coroutines and is stream of data that can be computed asynchronously
- Simplest Adapter Ever (based on this workaround)
- Github Actions - CI
- Hilt - Dependency Injection framework
- Transition - Animation
- Paging V3 - Pagination
- View Binding - View Binding
- OkHttp3 - Network interceptor
- Retrofit - HTTP client
- Glide - Loading images
- Timber - Log
- Gson - JSON library
- Material Components - Material Design
- Lottie - Vector animation library
- Kotlin DSL - Alternative syntax to the Groovy DSL
- Detekt - Static code analysis for Kotlin
- Gradle Doctor - Gradle build scan plugin
- Navigation - Navigate through the app
- LeakCanary - Memory leak detection
- Chucker - An HTTP inspector for Android & OkHTTP
- StrictMode - A developer tool which detects things you might be doing by accident
- Dark/Light Theme - Support dark/light themes
- DataStore - Data storage solution that allows you to store key-value pairs or typed objects
- AutoDispose - Automatically binding the execution of RxJava streams to a provided scope
Under Development 🚧
Add CIUse Kotlin DSL- Add Espresso, Instrumentation & Unit tests. To see a part of changes, click here.
Use Animations. To see changes, click here.Use Hilt. To see changes, click here.Migrate to Hilt 2.31. To see changes, click here.Use Paging V3. To see changes, click here.Use ViewBinding. To see changes, click here.- Migrate to JetPack Compose
Use detekt. To see changes, click here.Add coroutines and flow. To see changes, click here.Replace Preferences by DataStore. To see changes, click here.Migrate from RxJava 2 to RxJava 3. To see changes, click here.Add Custom Rx Adapter for Network Response Handling. To see changes, click here.
CI 🏭
This template is using GitHub Actions as CI.
Available workflows listed as follows:
- Validate Gradle Wrapper - Checks the gradle wrapper has a valid checksum.
- Pre Merge Checks - Runs
build
task. - Android - Runs
assembleDebug
task.
Tasks 🔧
- Gradle Doctor:
dependencyUpdates
- Displays the dependency updates for the project. - Detekt:
detektAll
- Run the static Kotlin code analysis for the whole project at once.
References 🧷
- The Punk API
- Right or Left animation by Marco Martina on LottieFiles
- Loading Beer animation by Hashim Irfan on LottieFiles
Contributing 🤝
Feel free to open an issue or submit a pull request for any bugs/improvements.