Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/android10/Android-CleanArchitecture-Kotlin
This is a movies sample app in Kotlin, which is part of a serie of blog posts I have written about architecting android application using different approaches.
https://github.com/android10/Android-CleanArchitecture-Kotlin
android android-cleanarchitecture-kotlin android-development architectural architectural-patterns clean-architecture functional-programming kotlin kotlin-android lessons-learned mobile-development
Last synced: 3 months ago
JSON representation
This is a movies sample app in Kotlin, which is part of a serie of blog posts I have written about architecting android application using different approaches.
- Host: GitHub
- URL: https://github.com/android10/Android-CleanArchitecture-Kotlin
- Owner: android10
- Created: 2017-05-26T12:55:52.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2024-08-25T17:02:48.000Z (5 months ago)
- Last Synced: 2024-10-16T16:12:36.858Z (3 months ago)
- Topics: android, android-cleanarchitecture-kotlin, android-development, architectural, architectural-patterns, clean-architecture, functional-programming, kotlin, kotlin-android, lessons-learned, mobile-development
- Language: Kotlin
- Homepage: https://fernandocejas.com/2018/05/07/architecting-android-reloaded/
- Size: 876 KB
- Stars: 4,686
- Watchers: 154
- Forks: 929
- Open Issues: 72
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-kotlin - Android-CleanArchitecture-Kotlin - This is a movies sample app in Kotlin. (Samples)
README
![banner](https://user-images.githubusercontent.com/37318022/40349145-3e0c8d8a-5dd8-11e8-8654-5784f9ab7554.png)
# STATUS: Refactoring! Please check the TODOs below in the **project status section**.
# Android - Clean Architecture - Kotlin [![Build Status](https://travis-ci.org/android10/Android-CleanArchitecture-Kotlin.svg?branch=main)](https://travis-ci.org/android10/Android-CleanArchitecture-Kotlin) [![codecov](https://codecov.io/gh/android10/Android-CleanArchitecture-Kotlin/branch/main/graph/badge.svg?token=x1AtDcNuDv)](https://codecov.io/gh/android10/Android-CleanArchitecture-Kotlin)
The purpose of this repo is to follow up Clean Architecture principles by bringing them to Android. It is worth saying that the idea is to take advantage of the Kotlin Programming Language features plus also pull in lessons learned and ideas from other interesting approaches like Functional Programming.## Project Status
- **Last Update: 2024.08**
- WIP: Migrate to Kotlin 2.0.
- WIP: Migrate to Jetpack Compose.
- TODO: Bug Fixes.
- TODO: Reorganize and cleanup tests.
- TODO: Reorganize dependencies and build system.## Blog post with implementation details explanation:
[Architecting Android… Reloaded](https://fernandocejas.com/2018/05/07/architecting-android-reloaded/)## Android - Clean Architecture - Java:
There is another Android Clean Architecture repository written in Java: https://github.com/android10/Android-CleanArchitecture with really nice discussions: https://github.com/android10/Android-CleanArchitecture/issues.
Article, lessons learned and some more material coming up. Check the following known bugs and TODO list.## Other material worth reading:
[Architecting Android…The clean way?](http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/)
[Architecting Android…The evolution](http://fernandocejas.com/2015/07/18/architecting-android-the-evolution/)
[Tasting Dagger 2 on Android](http://fernandocejas.com/2015/04/11/tasting-dagger-2-on-android/)
[Clean Architecture…Dynamic Parameters in Use Cases](http://fernandocejas.com/2016/12/24/clean-architecture-dynamic-parameters-in-use-cases/)
### ----------------------------------------------------------------------------------------------
## Sample app
![](https://user-images.githubusercontent.com/1360604/31345866-679a221a-ad17-11e7-8097-7800edb677fa.gif)### ----------------------------------------------------------------------------------------------
## Clean Architecture
![https://fernandocejas.com/2018/05/07/architecting-android-reloaded/](https://github.com/android10/Sample-Data/blob/master/Android-CleanArchitecture-Kotlin/architecture/clean_architecture_reloaded_main.png)### ----------------------------------------------------------------------------------------------
## Android 3 Layers Architecture
![https://fernandocejas.com/2018/05/07/architecting-android-reloaded/](https://github.com/android10/Sample-Data/blob/master/Android-CleanArchitecture-Kotlin/architecture/clean_architecture_reloaded_layers.png)### ----------------------------------------------------------------------------------------------
## UI Layer: MVVM
![https://fernandocejas.com/2018/05/07/architecting-android-reloaded/](https://github.com/android10/Sample-Data/blob/master/Android-CleanArchitecture-Kotlin/architecture/clean_architecture_reloaded_mvvm_app.png)### ----------------------------------------------------------------------------------------------
## Data Layer: Repository
![https://fernandocejas.com/2018/05/07/architecting-android-reloaded/](https://github.com/android10/Sample-Data/blob/master/Android-CleanArchitecture-Kotlin/architecture/clean_archictecture_reloaded_repository.png)### ----------------------------------------------------------------------------------------------
## Local Development
Here are some useful Gradle/adb commands for executing this example:* `./gradlew runApp` - Builds and install the debug apk on the current connected device.
* `./gradlew compileApp` - Builds the debug apk.
* `./gradlew runUnitTests` - Execute unit tests (both unit and integration).
* `./gradlew runAcceptanceTests` - Execute acceptance and instrumentation tests in the connected device.
* `./gradlew runTestCoverage` - Reports code coverage on tests within the Android codebase.
* `./gradlew runStaticCodeAnalysis` - Run static analysis on the Android codebase.
## Discussions
Refer to the issues section: https://github.com/android10/Android-CleanArchitecture-Kotlin/issues
## LicenseCopyright 2024 Fernando Cejas
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 athttp://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.![https://fernandocejas.com](https://github.com/android10/Sample-Data/blob/master/android10/android10_logo_big.png)