Skip to content

animeshroydev/AnimesAPIBlog

Repository files navigation

Animesh API Blog

Demo video of Blog website using CRUD functionality:

Django Website Repo

https://github.com/animeshroydev/animesh-api

Finished App Branch:

Tech Stack:

  • Kotlin:

Coroutines:

  • Advanced coroutine management using jobs

  • Cancelling active jobs

  • Coroutine scoping

Navigation Components:

  • Bottom Navigation View with fragments

  • Leveraging multiple navigation graphs (this is cutting edge content)

Dagger 2:

  • custom scopes, fragment injection, activity injection, Viewmodel injection

MVI architecture:

  • Basically this is MVVM with some additions

State management

  • Building a generic BaseViewModel

  • Repository pattern (NetworkBoundResource)

Room Persistence:

  • SQLite on Android 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)

  • Single source of truth principal

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

  • Building a powerful generic BaseViewModel

WebViews:

  • Interacting with the server through a webview (Javascript)

SearchView:

  • Programmatically implement a SearchView

  • Execute search queries to network and db cache

Images:

  • 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

Network Request Management:

  • Cancelling pending network requests (Kotlin coroutines)

  • Testing for network delays

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 (ConstraintLayout)

  • Material Dialogs

  • Fragment transition animations