README

This app is a simple demo app of list and details.

Technical Approach

  • The app is a simplified version of the clean architecture (less abstraction).
  • Organised into 3 modules
    • Domain: Holds the apps domain logic (mainly getting lists of data). Pure java. Defines it's own dependencies.
    • Data: For accessing data.
    • Presentation: Showing data to the user.
  • Uses dagger to wire the dependencies.
  • Uses RxJava for handling data flow.
  • Everything returns an empty result rather than returning something on the onError. If something is coming on onError it's treated as fatal and the chain will break down.
  • The presenters are pure java to make them unit testable

Things to improve

  • The Repositories look very similar they should be unified.
  • Only if the posts network call fails there is a recovery. For all the others there is no recovery if they fail they will crash the app.
  • Caching is very basic. It's an in memory Subject. It can survive rotation but nothing else and it never invalidates it's cache.
  • The views(activities and adapter) are not tested they should have espresso tests.
  • This app is perfect for shared view transition animation.