Test App Android Junior to display Reddit API it has been built with clean architecture principles, Repository Pattern and MVVM pattern as well as Architecture Components.
Build System : Gradle
- App show be able to shows th top 50 entries from RedditApi
- Pagination
- Detailed post preview (opening URL would be enough)
- Kotlin
- RecyclerView
- Chrome Tabs
- MVP/MVVM architecture + Repository pattern
- Retrofit 2 + RxJava / RxJava2
- Some kind of error handling
- Database storage
The purpose of this repo is to follow up Clean Architecture principles by bringing them to Android.
Libraries used in the whole application are:
- Jetpack🚀
- Viewmodel - Manage UI related data in a lifecycle conscious way and act as a channel between use cases and ui
- View Binding - feature that allows you to more easily write code that interacts with views
- Room - provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite
- Paging 3 - helps you load and display pages of data from a larger dataset from network
- Retrofit - type safe http client and supports coroutines out of the box
- Gson - JSON Parser,used to parse requests on the data layer for Entities and understands Kotlin non-nullable and default parameters
- okhttp-logging-interceptor - logs HTTP request and response data
- kotlinx.coroutines - Library Support for coroutines
- Material Design - build awesome beautiful UIs
- Koin - A pragmatic lightweight dependency injection framework for Kotlin
- ViewBindingPropertyDelegate - Make work with Android View Binding simpler
- RxJava2 - implementation of Reactive Extensions: a library for composing asynchronous and event-based programs by using observable sequences
- Glide - fast and efficient open source media management and image loading framework for Android
Copyright 2021 Bohdan Shpanchuk
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.