https://github.com/animeshroydev/animesh-api
- Kotlin:
- 
Advanced coroutine management using jobs 
- 
Cancelling active jobs 
- 
Coroutine scoping 
- 
Bottom Navigation View with fragments 
- 
Leveraging multiple navigation graphs (this is cutting edge content) 
- custom scopes, fragment injection, activity injection, Viewmodel injection
- Basically this is MVVM with some additions
- 
Building a generic BaseViewModel 
- 
Repository pattern (NetworkBoundResource) 
- 
SQLite on Android with Room Persistence library 
- 
Custom queries, inserts, deletes, updates 
- 
Foreign Key relationships 
- 
Multiple database tables 
- 
Database caching (saving data from network into local cache) 
- 
Single source of truth principal 
- 
Handling any type of response from server (success, error, none, etc...) 
- 
Returning LiveData from Retrofit calls (Retrofit Call Adapter) 
- 
Sharing a ViewModel between several fragments 
- 
Building a powerful generic BaseViewModel 
- Interacting with the server through a webview (Javascript)
- 
Programmatically implement a SearchView 
- 
Execute search queries to network and db cache 
- 
Selecting images from phone memory 
- 
Cropping images to a specific aspect ratio 
- 
Setting limitations on image size and aspect ratio 
- 
Uploading a cropped image to server 
- 
Cancelling pending network requests (Kotlin coroutines) 
- 
Testing for network delays 
- Paginating objects returned from server and database cache
- 
Bottom Navigation View with Fragments 
- 
Customizing Bottom Navigation Icon behavior 
- 
Handling Different Screen Sizes (ConstraintLayout) 
- 
Material Dialogs 
- 
Fragment transition animations