Skip to content
Roaim Ahmed Hridoy edited this page Aug 13, 2019 · 4 revisions

Welcome to the KotlinPinBoard wiki!

The primary goal of this project is to showcase my android programming skills. To prove my quick learning capability, I decided to learn and implement kotlin and jetpack in this project. This project is currently in development phase containing following modules,

  • A library module which is responsible for downloading remote resource and cache them in lruCache
  • An app module which is a sample gallery app which uses the above library module

The development tasks breakdown

  • Learn kotlin from, Udacity course ud9011
  • Learn Jetpack specially android architecture in kotlin from, Udacity course ud9012
  • Make a library module using kotlin syntax with utilizing lruCache, retrofit, rxjava and manual dependency injection
  • The lib has an abstract repository i.e. PinDownloader which has a function called download which returns a generic observable. A generic version of CacheDataSource and RemoteDataSource is injected manually.
  • An implementation of PinDownloader i.e. BitmapPinDownloader which downloads bitmap.
  • Change the Observable return type to Flowable so that it supports back pressure.
  • Replace RxJava concurrency with Coroutine
  • Add json implementation of PinDownloader as well as pojo converter with gson
  • Replace manual dependency injection to Dagger2
  • Add unit testing for the library to test different test scenarios
  • Publish the library to Jitpack.io
  • Make a sample app using MVVM architecture.
  • The ViewModels will subscribe to the LiveData returned by the injected repositories and return an immutable version of LiveData
  • Make AndroidDatabinding directly observe the LiveDatas returned by the viewmodels
  • Integrate Pagination by Paging library
  • Integrate Navigation Component
  • Add LocalUnitTests, IntegrationTests and UITests
Clone this wiki locally