Skip to content

Application of the concepts of the 2017 Clean Architecture book

Notifications You must be signed in to change notification settings

vanskarner/CleanMovie

Repository files navigation

CleanMovieCover

Clean Architecture | Android

Application of the guidelines and principles from the book Clean Architecture: A Craftsman's Guide to Software Structure and Design by Uncle Bob in a simple Android project.

Martin, Robert C. Clean Architecture: A Craftsman's Guide to Software Structure and Design. Prentice Hall, 2017
book

CleanArchitectureCover_2017

Introduction

To ensure the understanding of the project, we have chosen to use the most basic elements, avoiding the overload of details that usually occurs in Android development, keeping it simple and making it more understandable for those who are just getting familiar with the subject.

While the project is developed in Java, it is only to highlight the importance of context in these guides, as Kotlin is generally recommended as the main language for Android application development, as it offers a modern and concise syntax, officially endorsed by Google.

ExampleCleanMovie

Project division

The repository has 4 branches that represent the same system but decoupled in different ways:

package_by_component_Main package_by_component_Secondary
ByComponent- Main ByComponente - Secondary
package_by_feature package_by_layer
ByFeature ByLayer

Testing capability

Each project module in all branches has its own associated tests.

Execution of end-to-end tests
EndToEndTestRunning
Test reports
gif-pruebas

Metrics

Each branch has its own analysis to know its associated metrics. The results of this analysis can be found in the Project Summary section.

Metrics of the main branch

Wiki

Get a broader understanding of Clean Architecture by following the guidelines provided HERE.

Discussions

Refer to the discussions section HERE

Considerations

  • If you want to use the app, you need to first generate your developer api key at Themoviedb API. Then, once generated, you must put that key in the data.properties file:
#Project properties
themoviedbApiKey="HERE_YOUR_KEY"
  • To run any type of test, an API key is not necessary.

Another Example in Kotlin

A simple and small application that follows the concepts described in this wiki but using Kotlin, Coroutines, ViewModel, LiveData and Hilt: https://github.com/vanskarner/CleanExampleKT