Read Me
This sample project is created to showcase architecture, environment setup, use of customer configurable and reusable components, how we make api calls, how we handle data , how we map data. To demonstrate above mentioned purpose we have create simple Login , signup screen flow.
-
Environment Setup This sample project is configured for three environment: development, stage and production , this will help us to manage single code for all three different env.
-
Login/Signup UI in this project we have created login and signup screen using Constrain layout. Which is compatible with all mobile Android
-
Project Architecture we are using MVVM architecture so that we can make fragment thiner. We can manage code in different separate area so that it is easy to manage and debug code.
-
Data binding In Android, the Data Binding Library is a support library that allows you to bind UI components in your layouts to data sources in your app using a declarative format rather than programmatically.
-
Android KTX Android KTX is a set of Kotlin extensions that are included with Android Jetpack and other Android libraries. KTX extensions provide concise, idiomatic Kotlin to Jetpack, Android platform, and other APIs
-
SDP - a scalable size unit An android lib that provides a new size unit - sdp (scalable dp). This size unit scales with the screen size. It can help Android developers with supporting multiple screens
-
Koin Koin is a dependency injection framework for Kotlin. It is lightweight, can be used in Android applications, is implemented via a concise DSL, and takes advantage of Kotlin features like delegate properties rather than relying on annotations
-
Retrofit In Android, Retrofit is a REST Client for Java and Android by Square inc under Apache 2.0 license. Its a simple network library that used for network transactions. By using this library we can seamlessly capture JSON response from web service/web API. It’s easy and fast library to retrieve and upload the data(JSON or any other structured data) via a REST based web service.
-
ProgressUtils Manage api progress when we calling any apis using this class we can show or hide progress when needed
-
BindingAdapter Some attributes need custom binding logic using binding adapter we can write logic in xml
-
FragmentState
-
Declare all fragment in this screen
-
ViewUtils Declare all common dialog here and use when we need by just calling that method
-
IApiService Declare all apis call and that fields here
-
Viewmodelmodule Declare all new repository and model class here
-
Custom configurable components We are using our own create custom configurable components to create UI . So that with minimum line of code we can have different ui with single component. Ex. CustomTextField: this is a custom object using which we can crate different text filed UI.
-
Request package Declare any request related model in requst package
-
Result package Declare any response related model in result package
-
BaseFragmentFmExt Using base fragment we can mange all fragment like open or close from stack