Home

Awesome

<h1 align="center">SpaceX prepare for Clean Architecture liftoff:rocket:</h1> <p align="center"> <a href="https://developer.android.com/jetpack/androidx/releases/compose"><img alt="JetpackCompose" src="https://img.shields.io/badge/Jetpack%20Compose-1.2.1-blueviolet"/></a> <a href="https://developer.android.com/reference"><img alt="Platform" src="https://img.shields.io/badge/platform-android-brightgreen.svg"/></a> <a href="https://androidstudio.googleblog.com/2022/05/android-studio-dolphin-beta-1-now.html"><img alt="Android Studio Dolphin" src="https://img.shields.io/badge/AS%20Dolphin-2021.3.1%20Patch%204-9cf.svg"/></a> <a href="https://opensource.org/licenses/Apache-2.0"><img alt="License" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"/></a> <a href="https://app.bitrise.io/app/64cd2ed600a14151"><img alt="Build Status" src="https://app.bitrise.io/app/64cd2ed600a14151/status.svg?token=9eYCKzT6HcFJeAGeZmEH6g&branch=master"/></a> </p> <p align="center"> The purpose of this project is to consolidate some of the learned insights throughout the years about the <b>Clean Architecture</b> principles and reflect those lessons on Android, taking advantage of the Kotlin programming language features too. <br/><br>This project summarises some of the general use cases and demands on a typical production project using: <b>Jetpack Compose</b>, <b>Functional Programming</b>,<b>MVVM</b>, <b>Kotlin Coroutines</b> and <b>Kotlin Flows</b> (check the branches section for more information). </p> <p align="center"> <img src="/art/SpaceX-Latest-Banner.jpg"/> </p>

Libraries Used :books:

Modules :bookmark_tabs:

<img src="/art/SpaceX-Demo.gif" align="right" width="32%"/>

And two extra modules:

Branches :octocat:

There are three options depending on different tech-stack desired. The latest codebase will be updated in master. These are the three options available (all of them maintained):

<p align="center"> <img src="/art/clean_architecture_dark.jpg"/> </p>

Testing :mag:

Unit Testing

There are some highlights:

UI Testing (Compose)

I opted to use three types of approaches:

In the two first types of tests I used Robot Pattern to improve cleanliness and ease of readability. More information in my RobotPattern Medium Article!

License :oncoming_police_car:

Copyright 2022 Fernando Prieto Moyano

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.