A Clean Architecture App that uses feature Modularization Architecture (app, presentation, domain, data, buildSrc) modules to hit TMDB API using MVVM Architecture, Coroutines, Retrofit2, Pagination, Live Data, Data Binding, Koin, SOLID Principles, Unit Testing using MockK and UI Testing using Espresso.
- This layer has all the Android UI components like Activities, Fragments, ViewModels, etc.
- Contains all the business logic of the app. This layer has no Android components in it.
- All components related to data such as database, networking, api, shared preferences. It is an Android specific layer.
- Considered as entery point for the app
- Contains (Activity) that hosts presentation view
- Contatins BaseApplication and all needed app info
- Contains business model
- Contains business USECASES
- Repository interface
- Repository Implementation
- Executor API data
- Mapper data model to domain model
- Contains data service, third party data service
- View (Fragment/Layout) Adapt data to view
- Follows MVVM Architecture
- Mapper domain model to presentation model
- Handle data input from view via UseCase
- Allows organizing gradle dependencies between all modules by using KTS
You can easily write Unit Test up to 70% code coverage lines of code (LOC), if you write focus on
- Data: RepositoryImpl, Model Mapper
- Domain: UseCases
- Presentation: ViewModel, Model Mapper
Copyright (C) 2021 Shehab Alaa
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.