The app covers following topics:
- Kotlin
-
Coroutines
- Сoroutine management using jobs
- Cancelling active jobs
- Coroutine scoping
-
Navigation Components:
- Bottom Navigation View with Fragments
- Using multiple Navigation Graphs
-
Dagger 2
- Custom Scopes
- Fragment Injection
- Activity Injection
- Viewmodel Injection
-
MVI architecture
-
Room Persistence
- SQLite with Room Persistence library
- Custom queries, inserts, deletes, updates
- Foreign Key relationships
- Multiple database tables
-
Cache
- Database caching (Saving data from network into local cache)
-
Retrofit 2
- Handling any type of response from server (success, error, none, etc...)
- Returning LiveData from Retrofit calls (Retrofit Call Adapter)
-
ViewModels
- Sharing a ViewModel between several Fragments
- Generic BaseViewModel
-
WebViews
- Interacting with the server through a webview (Javascript)
-
SearchView
- Programmatically implemented SearchView
- Execute search queries to Network and DB Cache
-
Images
- Selecting images from local storage
- Cropping images to a specific aspect ratio
- Uploading a cropped image to server
-
Network Request Management
- Cancelling pending network requests with Kotlin Coroutines
-
Pagination
- Paginating objects returned from server and database cache
-
Material Design
- Bottom Navigation View with Fragments
- Customizing Bottom Navigation Icon behavior
- Handling Different Screen Sizes
- Material Dialogs
- Fragment transition animations
-
Flows and Channels