MVVMTemplate
MVVMTemplate copied to clipboard
An Android Template with MVVM and Clean Architecture
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 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.~~
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. - The Dependency Analysis:
buildHealth
- Provides advice for managing dependencies and other applied plugins
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.
Result ๐บ
Compose
