This project shows trending github repositories using MVI (Model View Intent) using kotlin flows and multi module clean architecture

Overview

GithubTrendingMVIFlow

Build

Architecture:

This project shows trending github repositories using MVI (Model View Intent) using kotlin flows and multi module clean architecture

  • Model View Intent
  • DI (Dagger / Hilt)
  • Kotlin Flows
  • Coroutines
  • Kotlin Multi Module (KMM)
  • Clean Architecture (S.O.L.I.D)
  • Unit Testing (Junit & MockitTo)
  • Ui Testing (Espresso & RoboElectric)
layers:

ui : contains activity/fragment/views

presentation : contains view models

use cases : contains use cases for handling data (//TODO explain more)

repos : contains data repositories (e.g. api repo, persistence repo)

remote : contains network related stuff

cache : contains database/shared Preferences related stuff

dependencies

you can get the dependencies graph by running ./gradlew moduleDependencies

ui
|---> presentation
        |---> use-cases
				|---> repos
					|---> remote
					|---> cache

Model

  • for each entity we create a model for
    • remote => FooRemote
    • cache => FooCache
    • repos/use-cases/presentation => FooItem
    • ui => FooUiModel
ui (FooUiModel)
|---> presentation (FooItem)
        |---> use-cases (FooItem)
			    |---> repos (FooItem)
				    |---> remote (FooRemote)
				    |---> cache (FooCache)
  • each layer should accept only its type and the above layer is required to provide it, ao the remote layer will accept FooRemote and the repos layer must provide to it

  • mappers graph:

ui (FooUiModel <-> FooItem)
|---> presentation
        |---> use-cases
			    |---> repos (FooItem <-> FooRemote) & (FooItem <-> FooCache)
				    |---> remote
				    |---> cache

Code Style:

We are following Google's Kotlin Style Guide. To use this style in Android Studio goto: Settings -> Editor -> Code Style -> Kotlin -> Set from... -> Kotlin Style Guide

You might also like...
A general purpose kotlin library that use kotlin coroutines, flows and channels to provide timer features with the most easy and efficient way

Timer Timer is a general purpose kotlin library that use kotlin coroutines, flows and channels to provide timer features with the most easy and effici

Episodie is a TV show time tracker app with unusual design written in kotlin and clean architecture approach. Get to know how much time you spent watching tv shows.
Episodie is a TV show time tracker app with unusual design written in kotlin and clean architecture approach. Get to know how much time you spent watching tv shows.

Episodie Episodie is a TV show time tracker app with unusual design. Get to know how much time you spent watching tv shows. Track easily overall progr

SimpleCloud-haste-module - SimpleCloud module for uploading the logs of your services to hastebin

SimpleCloud Haste Module A SimpleCloud Module for uploading the current logs of

A GitHub user Android apps using Dagger 2, MVVM, Modularization, Clean Architecture, and Airbnb Epoxy
A GitHub user Android apps using Dagger 2, MVVM, Modularization, Clean Architecture, and Airbnb Epoxy

A GitHub user Android apps using Dagger 2, MVVM, Modularization, Clean Architecture, and Airbnb Epoxy.

Android app based on clean architecture and using the github API to show open pull requests

This app is based on clean architecture and using the github API to show open pull requests. The code is made considering all design principles and guidelines.

BuildConfiguration information for use in multi-module, or Kotlin Multiplatform common code

component-build-configuration A small library supporting Kotlin Multiplatform for utilizing BuildConfiguration details from common code and across mod

This is a practical project for Professional Android Developers that covers clean Architecture basics using the following: skills: Real-like coding with Kotlin, MVVM Design pattern, Kotlin Coroutines, Room database, Navigation Controller, Jetpack compose, Use cases, and Dependency injection using Dagger-Hilt. This Andoird project is about classifying garbage pictures using a CNN-based Tensorflowlite model and fetching location using GPS to mark its area on the map.
This Andoird project is about classifying garbage pictures using a CNN-based Tensorflowlite model and fetching location using GPS to mark its area on the map.

Grbage_Detector_And_Locator Description As per some of the recent reports published, in India, the pollution levels are increasing at a colossal pace

Words App which acts as a dictionary. Use the concept of Intent.

Words App This folder contains the source code for the Words app codelab. Introduction Words app allows you to select a letter and use Intents to navi

Owner
Zulqurnain Haider
Software Engineer II (SWE II) at Swvl | ex-Cheetay
Zulqurnain Haider
GitHub application fetches events, repositories and profile using GitHub APIs

GitHub application using GitHub REST API Dagger MVVM architecture Mockk Jetpack Compose Kotlin Coroutines Application pages Attention If you want to u

Marjan DavoodiNejad 6 Oct 17, 2022
Wallpaper app made using Hilt, Retrofit, Room, Navigation Components, MVI, Coroutines, Flows, ViewModel, LiveData, Datastore Preference.

Android Picture Engine Wallpaper app made using Hilt, Retrofit, Room, Navigation Components, MVI, Coroutines, Flows, ViewModel, LiveData, Datastore Pr

Simone Conigliaro 59 Sep 27, 2022
An android app built using Kotlin following Multi-Module Clean Architecture MVVM

Notflix ??️ Work In Progress ?? An android app built using Kotlin that consumes TMDB API to display current trending, upcoming and popular movies ?? a

Victor Kabata 290 Dec 30, 2022
Easy Note: Building a Notes app using MVVM, JetPack Compose with a clean multi-module architecture approach.

Easy Note Easy Note: Notes app using JetPack Compose and MVVM with a clean architecture approach. This app shows the usage of the new Navigation Archi

Akhilesh Patil 10 Dec 17, 2022
A movies application built Using clean architecture and MVVM (Model-view-viewModel).

Movies-App This is a movies application which fecthes upcoming and popular movies from the movie Database(TMBD). It is built Using clean architecture

Felix Kariuki 4 Dec 20, 2022
An android app built using Kotlin that consumes TMDB API to display current trending, upcoming and popular movies 🍿 .

Flick An android app built using Kotlin that consumes TMDB API to display current trending, upcoming and popular movies ?? .It has been built followin

Kagiri Charles 8 Nov 29, 2022
An app that allows you to search for Github profiles of users and their repositories [d.light Android Engineer Test], for the Android Engineer Role

An app that allows you to search for Github profiles of users and their repositories [d.light Android Engineer Test], for the Android Engineer Role

Joel Kanyi 9 Aug 26, 2022
UML model and code examples of design patterns for Kotlin/Native. The model is created with Astah.

Design Pattern Examples in Kotlin/Native Model and code examples of GoF Design Patterns for Kotlin/Native. This project is available for the following

Takaaki Teshima 3 Jun 27, 2022
Kata to practice Clean Architecture & MVI by building TodoList Application

Mvi Todo Kata Application Features TODO specification Title Description Due Date Priority Supported Operations Create a new TODO Remove a TODO Select

seungmin shin 0 Nov 3, 2021
Top trending movies app for Android

Flickwatcher Flickwatcher for Android lets you see today's latest trending movies! Cool Dependencies: Jetpack Compose Accompanist-Coil Kotlin Coroutin

Evan W. Isnor 5 May 16, 2022