/OfflineApp

Primary LanguageJavaApache License 2.0Apache-2.0

Offline App

What is an Offline App?

Offline App (or Offline-First App) enables user to seamlessly interact with it by using local device storage and then synchronizing the data with some remote storage (cloud database, etc) later via a background process.

Libraries Used

  • Patterns and frameworks
    • MVVM (Model-View-ViewModel) using Google's new Architecture components ViewModel, LiveData, LifecycleObserver, etc.
    • Clean Architecture with ViewModel interacting with UseCases and the latter interacting with local database. Making each layer highly testable.
  • Database
  • Background Job processing
  • Remote Call APIs
  • Dependency Injection
  • Communication between app layers
    • RxJava2 and RxAndroid for interacting between ViewModel and local database.
    • RxRelay for publishing requests from the background job so that lifecycle observer components can update local database.
  • Other
    • ButterKnife to simplify View and Listener bindings.
    • Travis CI is used for automating continuous integration.
    • The following quality checks are configured: checkstyle, pmd, findbugs, lint and RxLint. You can perform all of them at once by executing ./gradlew check