Course Demo
updated Aug. 2, 2021

In this course you'll learn to build a real application that interacts with the website open-api.xyz.

Open-api.xyz is a sandbox website for codingwithmitch members to practice interacting with a Rest API.


Prerequisites (Recommended not required):

  1. Dagger 2

  2. MVI Architecture



What you'll learn:

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

Github repo: Open-Api Android App






Comments