Skip to content

ctarabusi/CleanArchitecture

Repository files navigation

CleanArchitecture

This project represent a proof of concept inspired by the VIPER architecture (See https://www.objc.io/issues/13-architecture/viper/).

  • The main objective is to evaluate the architecture (using it into "Real world" use cases) finding a balance between flexibility, modularity, loose coupling and overhead.
  • Secondly it is intended as a blue print for future projects defining a set of useful libraries, frameworks and best practices.
  • Thirdly it is a good way to use some APIs to improve my experience on it (MediaRecorder, Camera API)

Here is a list of libraries/frameworks I integrated:

  • Butterknife: to inject views in UI code and avoid findViewById and click listeners boilerplate
  • Leak Canary: a very nice memory leak detection library to be sure to not leak activities etc
  • Dagger 2: for Dependency Injection. It is a quite complex framework and still is not used at its full potential (Still work in progress)
  • RxJava and RxAndroid: used on the interactor layer at the moment to schedule in a nice compact way the data store or network calls on the background thread and having the observer publishing results on the UI thread.
  • Stetho: to live inspect the UI and the network usage

For testing:

  • Mockito
  • JUnit
  • Hamcrest
  • Roboeletric

Integrated some AppCompat elements:

  • Navigation view
  • Snackbar
  • Toolbar
  • FloatingActionButton

Still TODOs:

  • General code polishing
  • Improve Dagger usage (implementing the activity context for example)
  • Integrating Espresso for UI Testing
  • General clean up and adding Null/NotNull annotations
  • Adding more presenters and interactors tests
  • Need to put the MediaRecorder on background thread?
  • Move Camera API to interactor and adding reactive behaviour

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages