Download the APK here
- This app was taken up as an assignment as part of the Kings Learning (Enguru) Tech interview process
- Requirement & Spec document here
- Wikipedia web service documentation here
-
Currently the App is structured such that it follows clean architecture system combined with the MVVM pattern
-
Notable library integrations include: - Kotlin Std Lib - Dagger2 - Retrofit2 - RxJava2 - Glide - Google Architecture Components
-
The App utilizes the Wikipedia API to search for related articles pertaining to user's interest
-
The most significant API used would be the query API, providing search results for the search term provided by the user via SearchView in the UI
-
This search feature uses various tools like RxJava, Gson & Retrofit to fetch data over the network is an asynchronous way
-
Swipe to refresh functionality is also implemented on the search results page
-
The listing page loads results in batches of 10, lazily loading more and more results as user scrolls down
-
Currently it uses Chrome custom tabs library to open the Wikipedia article inside the app itself.
-
Due to the wikipedia API being slightly 'unconventional', it didn't seem technically feasible to parse raw html for each & every article being fetched from the network
-
For offline (cache) functionality, chrome custom tabs allow an option to save the file locally for future use without network access.
-
There is room for improvement in this area, eg. Taking article contents in a mobile viewing friendly format & save those contents in local database using pageid
-
Such a cache could be set up using RoomDB library to store contents for offline usage
-
Due to time & technical constraints, this has been left for future revisions