Originally an iOS MVC project ripped apart then put back together with MVP, and translated to the Android framework, sharing common business logic between iOS and Android app architectures.
My inspiration for this project was to refamiliarise my understanding of iOS development, bringing across refined architecture concepts and workflows used for developing Android apps, to bridge my knowledge-gap of iOS development. I was unable to find an iOS boilerplate project which combined MVP with Rx, Dependency Injection, near-auto JSON serialisation, and image loading & caching, all of which is commonly found in Android MVP boilerplate projects, and are mandatory in the Android apps I develop.
This project will benefit those who develop for either Android or iOS, and intend to transition to the other at some stage. I have shared the iOS-alterative to this project with common libraries found in production apps today. Both projects share the same business logic and will aid in understanding the differences between Swift & Java syntax, and iOS & Android frameworks, learning through example.
The Kotlin-alternative project can be found here
The iOS-alternative project can be found here
The following libraries were used, most of which have an iOS alternative:
- RxJava to provide a reactive programming standard VERY similar to RxSwift implementation
- Retrofit and OkHttp for API communication. Alternative to Alamofire
- Moshi to serialise JSON to POJO's, and vice-versa. Alternative to Gloss
- Dagger for dependency injection. Alternative to Swinject
- Picasso for image caching and loading. Alternative to Kingfisher
- Android Support Library to provide common frameworks backportable to earlier versions of Android
- ButterKnife for enabling view binding for fields and methods
- RxAndroid which provides RxJava bindings relative to the Android framework
- Retrolambda bring lambda support to Java <= 7
- Timber an improved logger which has an extensible API
- Arrow which provides many useful methods found in the Guava/Apache Commons libraries
- Dexcount to keep tabs on your method reference count for each build
Original iOS project downloaded from Ray Wenderlich's site, here.