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.

Topics

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

Chrome

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: https://blog.kaush.co/2017/06/21/rxjava1-rxjava2-migration-understanding-changes/

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
java (31,279
android (6,284
mvvm (328
recyclerview (252
rxjava2 (219
retrofit2 (191
dagger2 (165
livedata (117
viewpager (105
viewmodel (100
room (88
persistence (74
architecture-components (64
mvvm-android (49
room-persistence-library (45
facebook-login (33
rxandroid2 (18