🏘 🎃 Real Estate Sample App with RxJava3+Coroutines Flow, Dynamic Feature Modules, Dagger Hilt, Offline First, ConcatAdapter, Animations and tests for Room, Retrofit, useCase and ViewModels with TDD.
Sample project that build with MVVM clean architecture and various cool techs including RxJava3 and Coroutines Flow, Dynamic Feature modules as base of BottomNavigationView or ViewPager2, with both OfflineFirst and OfflineLast approaches as database Single Source of Truth Merge Adapter, ViewBinders for setting inner RecyclerViews, RecycledViewPools, SavedStateHandle, and more.
Unit tests are written with JUnit4, JUnit5, MockK, Truth, MockWebServer. Data(including for both RxJava and Coroutines tests for Room and Retrofit), Domain, and ViewModel tests in Home module are written with Test Driven Development.
Flow | RxJava3 | Pagination |
---|---|---|
Dashboard | Notification | Account |
---|---|---|
buildSrc
folder and extensions.features
and libraries
folders are used to include android libraries and dynamic feature modules@EntryPoint
is createdSome of the popular libraries and MVVM clean architecture used with offline-first and offline-last with Room database and Retrofit as data source
Kotlin - First class and official programming language for Android development.
Coroutines - Threads on steroids for Kotlin
Flow - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
RxJava3 - Newest version of famous reactive programming library for Java, and other languages
Android JetPack - Collection of libraries that help you design robust, testable, and maintainable apps.
Material Components for Android - Modular and customizable Material Design UI components for Android.
ViewModel
.Retrofit - A type-safe HTTP client for Android and Java.
Glide - Image loading library.
ConcatAdapter RecyclerView adapter which enables you to sequentially combine multiple adapters to be displayed in a single RecyclerView.
Lottie - Animation library from AirBnB
MpChart - ⚡️ MPAndroidChart is a powerful & easy to use chart library for Android ⚡️
Chucker - OkHttp interceptor providing a UI for inspecting and sharing their content.
Architecture
Tests
Gradle
Uses both library modules and dynamic feature modules
Uses concepts of clean architecture