News Mobile Apps (Kotlin + MVP + RxJava + Realm + Micro-apps)
1. $: git clone https://github.com/mochadwi/android-news-app.git
2. $: git submodule update --init --recursive
3. $: git submodule foreach git pull origin master
- Why sudmodule?
ANS: multi repo due to micro-apps architecture my articles
- Why product flavours?
ANS: For ease of use to change the environment without affecting production environment (separate build config, static files, etc)
-
The codebase was written in Kotlin language by love
-
Glide (Image loading on articles)
-
RxJava (Implemented on SearchView)
-
Retrofit + Okthttp (Unsafe SSL client included, implement rest client endpoint and generator)
-
Realm (Store the actual API response to the local database, implement custom model Serializer to support Gson & Realm side by side: original article)
-
ButterKnife (View binding omit the bloated findViewById)
-
Koda Time (Ease of use LocalDate than traditional java.util.Date)
-
Gson (Ease of use to convert JSON to POJO & vice versa)
-
RelativeTimeTextView (Show the actual time articles has been published: "Published Now, Published 2 Hours Ago, etc")
-
ReadMore (To trim long text view)
-
Using Flavour dimension to switch between prod & dev environment (Separate actual codebase, and to allow multiple installation on the same phone, due to different package so it isn't conflicted each other)
-
CardView (Material Design-ish)
-
ConstraintLayout (Ease of use building xml layout)
-
Gitlab CI (CI / CD on Gitlab using .gitlab-ci.yml, for develop branch, previously this is my private project on gitlab)
-
UI & Unit Test not implemented (I'm still figuring it out why it is error with Realm when running the test: Reference)
- I'm using simple clean MVP pattern (Model-View-Presenter) inspired by Google Architecture
-
Source code (available on this repo)
-
APK (attached here gdrive link to this email, zipped, signed version)