Skip to content

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.

Notifications You must be signed in to change notification settings

Shehab-Alaa/CleanArchitectureApp

Repository files navigation

Android Kotlin Clean Architecture App

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.

app_screenshot

Introduction

Layers

3layer-1

UI or Presentation Layer

  • This layer has all the Android UI components like Activities, Fragments, ViewModels, etc.

Domain Layer

  • Contains all the business logic of the app. This layer has no Android components in it.

Data Layer

  • All components related to data such as database, networking, api, shared preferences. It is an Android specific layer.

Modules

depends

App Module

  • Considered as entery point for the app
  • Contains (Activity) that hosts presentation view
  • Contatins BaseApplication and all needed app info

Domain Module

  • Contains business model
  • Contains business USECASES
  • Repository interface

Data Module

  • Repository Implementation
  • Executor API data
  • Mapper data model to domain model
  • Contains data service, third party data service

Presentation Module

  • View (Fragment/Layout) Adapt data to view
  • Follows MVVM Architecture
  • Mapper domain model to presentation model
  • Handle data input from view via UseCase

BuildSrc Module

  • Allows organizing gradle dependencies between all modules by using KTS

Unit Test

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

License

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.

About

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.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages