Awesome Open Source
Awesome Open Source

Android Architecture : base-mvvm

Inspiration mostly from the good works of Mindorks Open Source Project. But this app is tweaked a little on the navigation front and also houses a few more features, compared to the original app.

This repo is a sample application that implements MVVM architecture using ViewModel, RxJava2, Dagger2, Retrofit2, Room, LiveData and Butterknife. While there are several open sourced examples on MVVM using Data Binding library, this repo doesn't use Data Binding, instead uses Butterknife and LiveData to bind View and ViewModel together. (Original App uses Google's Data Binding library)
This repo uses Retrofit and Room library for network calls and database operations respectively (Original App uses FastAndroidNetworking and GreenDao).

Another highlight is that this repo also has Data Persistency unlike the original app.


What does this app do?

To sum up in one line, this app shows news feed(Open Source codes and Developer Blogs) to the consumer. Now, the idea is essentially the same but the manner in which it is served to the Consumer, differs(precisely 3).

Quick Glimpse

Home Screen Feed Screen Blog Details Screen Open Source Details Screen

Naive Attempt at Animated Vector Drawable


APIs and Architectures Used

  1. Model View ViewModel Architecture
  2. RxJava/RxAndroid 2 for concurrency
  3. Dagger2 for managing the dependency tree and also for dependency injection
  4. Room library from AAC(from Google), for database operation
  5. ViewModel from AAC(from Google), for acting as intermediate stateholder for the View and Model in a lifecycle conscious way.
  6. LiveData from AAC(from Google), used in ViewModel and Room, so that the data flowing from Data layer to View layer happens due to the react nature of the LiveData.
  7. Retrofit2 library for network calls
  8. ButterKnife for View Injections
  9. Glide for Image Loading

I'm also looking at adding the following Libraries for future iterations:

  1. LeakCanary
  2. Mockito
  3. JUnit
  4. Bottom Sheets
  5. Shared Element Transition and Content Transition

Library reference resources

  1. RxJava2:
Related Awesome Lists
Top Programming Languages

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Java (412,846
Mvvm (5,375
Rxjava (4,215
Animated (3,883
Viewmodel (2,433
Retrofit2 (1,987
Livedata (1,631
Mvvm Architecture (1,515
Dagger2 (1,317
Viewpager (1,310
Aac (855
Rxandroid (810
Architecture Components (794
Butterknife (791
Mvvm Android (605
Room Persistence Library (472
Facebook Login (410
Collapsingtoolbarlayout (32
Animated Vector Drawables (21
Heterogeneous Lists (3