All Projects β†’ ferPrieto β†’ Coroutines Flows Modularised

ferPrieto / Coroutines Flows Modularised

Clean Architecture Modular Project: MVVM + Coroutines+ Flows + Dagger2 + LiveData + UnitTests + UITests + MockWebServer

Programming Languages

kotlin
9241 projects
flow
126 projects

Projects that are alternatives of or similar to Coroutines Flows Modularised

Android Clean Architecture Mvvm Dagger Rx
Implemented by Clean Architecture, Dagger2, MVVM, LiveData, RX, Retrofit2, Room, Anko
Stars: ✭ 138 (-16.87%)
Mutual labels:  mvvm, clean-architecture, clean-code, retrofit2, livedata
Clean Mvvm Archcomponents
πŸ‘½ Android app consuming Star Wars API.Built with clean architecture ,MVVM pattern, Koin , Coroutines + Flows ,Architecture Components, Data Binding , Firebase , Unit/UI Tests ,Motion Layout
Stars: ✭ 285 (+71.69%)
Mutual labels:  mvvm, clean-architecture, espresso, retrofit2
paybill-manager
Your personal finance manager
Stars: ✭ 46 (-72.29%)
Mutual labels:  mvvm, clean-architecture, espresso, retrofit2
Githubprojectbrowser
This is a sample Android Project that is based on Clean Architecture
Stars: ✭ 64 (-61.45%)
Mutual labels:  clean-architecture, espresso, retrofit2, livedata
Kotlinjetpackinaction
πŸ”₯πŸ”₯ Kotlin Jetpack zero to hero. ζ–°ζ‰‹εˆ°ι«˜ζ‰‹
Stars: ✭ 264 (+59.04%)
Mutual labels:  mvvm, clean-architecture, retrofit2, livedata
Offlinesampleapp
Sample Offline-First MVVM app that uses Android Priority Job Queue, Room, Retrofit2, LiveData, LifecycleObserver, RxJava2, Dagger Android
Stars: ✭ 653 (+293.37%)
Mutual labels:  mvvm, clean-architecture, retrofit2, livedata
Android Architecture Components Kotlin
Clean code App with Kotlin and Android Architecture Components
Stars: ✭ 23 (-86.14%)
Mutual labels:  clean-architecture, clean-code, retrofit2, livedata
Php Programming Best Practices
Referencia para los desarrolladores de Tiendanube y para la comunidad de PHP.
Stars: ✭ 138 (-16.87%)
Mutual labels:  solid, clean-architecture, clean-code
Android tmdb clean architecture
Showcase of clean architecture concepts along with Continuous Integration and Development for modular Android applications. Includes test suits (functional and unit tests) along with code coverage.
Stars: ✭ 63 (-62.05%)
Mutual labels:  clean-architecture, espresso, retrofit2
Android Modular Architecture
πŸ“š Sample Android Components Architecture on a modular word focused on the scalability, testability and maintainability written in Kotlin, following best practices using Jetpack.
Stars: ✭ 2,048 (+1133.73%)
Mutual labels:  solid, clean-architecture, clean-code
Moviefinderusingmvvm Android
πŸ”₯ MVVM + Clean Architecture + Best Practices | 🍿Movie Finder is a sample Android application πŸ“±to search movies using OMDb API which is built to demonstrate use of Modern Android development tools - (Kotlin, Coroutines, Kodein, Architecture Components, MVVM, Retrofit, Gson, Material Components) πŸ˜ŠπŸ˜ŠπŸ˜‰
Stars: ✭ 66 (-60.24%)
Mutual labels:  mvvm, retrofit2, livedata
Event Sourcing Castanha
An Event Sourcing service template with DDD, TDD and SOLID. It has High Cohesion and Loose Coupling, it's a good start for your next Microservice application.
Stars: ✭ 68 (-59.04%)
Mutual labels:  solid, clean-architecture, clean-code
Price Tracker
Price Tracking Application - An experimental Kotlin Android project with complex android app requirements.
Stars: ✭ 80 (-51.81%)
Mutual labels:  mvvm, retrofit2, livedata
Android Architecture Components Mvvm Retrofit Java
This repository contains Android Architecture Components ( LiveData , View Model and MVVM pattern with retrofit for consuming rest api )
Stars: ✭ 63 (-62.05%)
Mutual labels:  mvvm, retrofit2, livedata
Foodium
It simply loads Posts data from API and stores it in persistence storage (i.e. SQLite Database). Posts will be always loaded from local database. Remote data (from API) and Local data is always synchronized.
Stars: ✭ 1,940 (+1068.67%)
Mutual labels:  mvvm, retrofit2, livedata
Tdcapp
Sample app which access the TDC (The Developer's Conference) REST API.
Stars: ✭ 55 (-66.87%)
Mutual labels:  mvvm, clean-architecture, livedata
Business Search App Java
Showcases object oriented programming in Java, Java Swing, Kotlin, and Android
Stars: ✭ 53 (-68.07%)
Mutual labels:  mvvm, clean-architecture, retrofit2
Movieapp Clean Architecture
Learning Project (Movie App) For Applying Android Architecture Components And Clean Architecture Using MVVM With Kotlin
Stars: ✭ 123 (-25.9%)
Mutual labels:  mvvm, clean-architecture, livedata
Android Mvp Architecture
MVP + Kotlin + Retrofit2 + Dagger2 + Coroutines + Anko + Kotlin-Android-Extensions + RX-java + Mockk + Espresso + Junit5
Stars: ✭ 82 (-50.6%)
Mutual labels:  clean-architecture, clean-code, retrofit2
Coolweather
Weather App that uses Android best practices. Android Jetpack, clean architecture. Written in Kotlin
Stars: ✭ 154 (-7.23%)
Mutual labels:  mvvm, clean-architecture, retrofit2

Platform Build Status

banner

SpaceX πŸš€

Table of Contents

Introduction

The purpose of this project 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 aproaches like Functional Programming, MVVM setup, Coroutines, Flow and LiveData (I've kept a branch using RxJava). DarkTheme support is added too.

structure

Modules

  • app - The application module with access to all the application
  • data - Android module that can only access domain module
  • data-api - Android module that can only access data module
  • domain - Kotlin module that cannot access any other module
  • presentation - Android module that can only access domain module
  • navigation - Android jetpack navigation abstraction (it contains the navigation config file) cannot access any other module

And two extra modules:

  • core - Base classes module (factories, events, etc.) that cannot access any other module
  • core-android-test - Tests classes module (rules, date builders,etc.) that cannot access any other module

Testing

Unit Testing

There are some highlights:

  • Every layer in the architecture has been tested with its mapper|transformer|provider.
  • Mockito has been used for mocking|stubbing.
  • Given|When|Then steps have been followed, in order to give a more structured overview.

UI Testing

Following the same approach I made in a previous personal project, a month ago Medium Post, I've used a dynamic test configuration.

  • In order to mock the responses and use them for instrumentation testing, I've used MockWebServer.
  • In order to give a concise and clean face of the Espresso tests, I've applied Robot Pattern.

robot

Demo

Libraries Used

  • Coroutines Library support for Kotlin coroutines.
  • Flows for asynchronous data streams (still in experimental version).
  • LiveData for reactive style programming (from VM to UI).
  • Navigation for in-app navigation.
  • Dagger2 for dependency injection.
  • Retrofit for REST api communication.
  • Timber for logging.
  • Espresso for UI tests.
  • Mockito-Kotlin for mocking in tests.
  • MockWebServer for Instrumentation tests.
  • AndroidX Test Library for providing JUnit4 and functions as launchActivity in UI tests
  • Picasso Image downloading and caching library
  • JodaTime Date library that lets manage more extensively and easily dates
  • BottomSheet Library that contains a bottom sheet view with animations (expand/collapse)
  • SolidAdapter Library that provides a SolidAdapter implementation, instead of RecyclerView.Adapter

License

Copyright 2020 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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].