This Application has Two Screens and One Fragment The First Screen is The Splash Screen To Show The User Application Info With Logo THe Second Screen is The Main Screen Store All Fragments At One Screen But at this example just one fragment at the main screen
- Room Database
- Kotlin Coroutines
- Clean Architecture
- Mvvm Architecture
- Multi Modular Application
- Dependencies Management At Gradle
- State Handler With State Destroyer
- Application Configuration At WintropApplication
- Api Requests With Retrofit
- Reactive Operations With RxJava (At This Example Just Observable)
- Parcelable Entities
- Dependency Injection (Motif , Koin)
-
Data Layer: This Layer has The Models for requests , Database, Object Mappers, etc... At This Layer Should Implement The Data Implementation For THe Application And THis Layer is a sub layer from the Domain Layer
-
Domain Layer: This Layer has the ViewModels To handle the application logic with State Management Action : This is the Event sent from View To Tell the view Model i want to execute this event by submit Action State : This is Result About THe Current State in ViewModel
at this layer always ViewModel Handling each state to view but the View don't know anything about the ViewModel just submit incoming actions and this actions applied via Observer at the View
- UI : this layer just show the data or error via State
- Main State 1.1 Empty State 1.2 Error State 1.3 Success State
The Empty State is THe Initialization State because each viewModel Should Execute an initial state for view The Error State : if ViewModel Found any Error then submit an Error State to show user the error details Success State : Handle The Response from ViewModel to View and Save The State for Rotation or Any View Configuration Changed
Each Method At Application Executed at Background Thread and just UI Components executed at Main Thread Via Kotlin Coroutines
This Application Built On Vortex Library To Config the Application Vortex Link : https://github.com/Vortex-io/Vortex Bintray Link : https://bintray.com/yt98/Vortex