Project Url: Drjacky/MVVMTemplate
Introduction: An Android Template with MVVM and Clean Architecture
How to use 👣
Compose version ⭐
For the compose version, which is under development, switch to feature/compose branch.
- 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 CI Use 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.
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
- Android - Runs
- Gradle Doctor:
dependencyUpdates- Displays the dependency updates for the project.
detektAll- Run the static Kotlin code analysis for the whole project at once.
- The Dependency Analysis:
buildHealth- Provides advice for managing dependencies and other applied plugins
- The Punk API
- Right or Left animation by Marco Martina on LottieFiles
- Loading Beer animation by Hashim Irfan on LottieFiles
Feel free to open an issue or submit a pull request for any bugs/improvements.