A sample Android app demonstrating MVVM architecture in Kotlin using ViewModel, LiveData, Retrofit, and testing libraries.
kotlin-mvvm is a sample Android application that demonstrates how to implement the Model-View-ViewModel (MVVM) architectural pattern using Kotlin. It integrates Android Architecture Components like ViewModel and LiveData with libraries such as Retrofit for networking and Mockito for testing. The project serves as a hands-on reference for building well-structured, testable Android apps following modern best practices.
Android developers learning MVVM architecture, Kotlin programmers seeking practical examples, and teams adopting Android Architecture Components in their projects.
It provides a clear, production-ready example with multiple branch implementations showcasing advanced topics like State Flow, Jetpack Compose, and dependency injection, helping developers avoid common pitfalls and accelerate their learning.
MVVM(Model View ViewModel) sample in Kotlin using the components ViewModel, LiveData and Retrofit library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a straightforward example with ViewModel and LiveData, including architecture diagrams and flow charts that visualize the pattern, as shown in the README's images.
Demonstrates integration with standard Android libraries like Retrofit for networking, Glide for images, and Mockito for testing, making it practical for real-world use.
Offers multiple branches covering State Flow, Jetpack Compose, RxJava, Hilt, and more, allowing developers to explore extended implementations beyond the basics.
Includes unit tests with Mockito and references to testing strategies, highlighting how to test ViewModel and LiveData components effectively.
Uses older versions like Retrofit 2.3.0 and OkHttp 3.4.1, which may lack recent features, performance improvements, and security updates.
The numerous branches for different implementations (e.g., State Flow, Compose, Hilt) can be overwhelming for beginners, requiring careful selection and configuration.
Tied to a specific tech stack; adapting to alternative libraries (e.g., Koin instead of Hilt or Picasso instead of Glide) requires significant code changes.