All Projects → IvanAntsiferov → News-Feed-App

IvanAntsiferov / News-Feed-App

Licence: Apache-2.0 License
Simple news feed app for Android, built with sort of MVI + Clean Architecture

Programming Languages

kotlin
9241 projects
prolog
421 projects

Projects that are alternatives of or similar to News-Feed-App

Pagination-MVI-Flow
Pagination MVI Coroutines Flow. Play MVI with Kotlin Coroutines Flow | MVI pattern on Android using Kotlin Coroutines Flow | Dagger Hilt DI | SharedFlow | StateFlow
Stars: ✭ 45 (+221.43%)
Mutual labels:  mvi
Android-MVI-Clean-Arch-Sample
A Simple Android Project demonstrating Clean Arch + MVI with https://api.nasa.gov/api.html#apod as use-case example
Stars: ✭ 20 (+42.86%)
Mutual labels:  mvi
Retrogamer-Compose
Retro games implemented using Jetpack Compose
Stars: ✭ 113 (+707.14%)
Mutual labels:  mvi
MVI-Architecture-Android-Beginners
This repository contains a beginner sample app that implements MVI architecture
Stars: ✭ 199 (+1321.43%)
Mutual labels:  mvi
Reaktor
👾 A Framework for reactive and unidirectional Kotlin application archtitecture with RxJava2.
Stars: ✭ 16 (+14.29%)
Mutual labels:  mvi
weather-app-2020-android
Android Weather App 2020
Stars: ✭ 15 (+7.14%)
Mutual labels:  mvi
Accounting
A simple accounting app that provides basic additions, deletions, modifications, and provides a simple summary page, which is implemented by using MVI pattern.
Stars: ✭ 30 (+114.29%)
Mutual labels:  mvi
Artic
A take on dynamic feature modularization, kotlin coroutines, MVI and unidirectional data flow. WIP
Stars: ✭ 47 (+235.71%)
Mutual labels:  mvi
Compose-ShoppingList
Jetpack compose shopping list app
Stars: ✭ 52 (+271.43%)
Mutual labels:  mvi
kmm
Rick & Morty Kotlin Multiplatform Mobile: Ktor, Sqldelight, Koin, Flow, MVI, SwiftUI, Compose
Stars: ✭ 52 (+271.43%)
Mutual labels:  mvi
UI-Communication-with-MVI
Effective UI Communication with MVI architecture, a BaseActivity and the Repository Pattern.
Stars: ✭ 17 (+21.43%)
Mutual labels:  mvi
StarWarsSearch-MVI
Star wars sample android project showcasing the use of View components for rendering UI in Fragments and Activities. Uses Android Jetpack, clean architecture with MVI (Uni-directional data flow), dagger hilt, and kotlin coroutines with StateFlow
Stars: ✭ 189 (+1250%)
Mutual labels:  mvi
eosreach-android
An EOS wallet developed in Kotlin using the eos-jvm SDK and the model view intent (MVI) design pattern. This wallet serves as a blueprint for how other developers might want to utilise eos-jvm to develop native Android apps that consume the EOS blockchain.
Stars: ✭ 37 (+164.29%)
Mutual labels:  mvi
fluxy
Fluxy is a Flux architecture implementation written in Kotlin.
Stars: ✭ 25 (+78.57%)
Mutual labels:  mvi
JsonPlaceholderApp
This was originally a code challenge for a company, but now is an example of MVI on Android.
Stars: ✭ 26 (+85.71%)
Mutual labels:  mvi
WeatherApp MVI sample
🌸[Functional reactive programming (FRP)] 🍁Simple Android weather forecast application written in Kotlin, using RxKotlin, Retrofit2, Mosby, Room Persistence ❄️MVI Pattern with Mosby Library
Stars: ✭ 106 (+657.14%)
Mutual labels:  mvi
android-mvi
Android MVI design pattern in Kotlin
Stars: ✭ 57 (+307.14%)
Mutual labels:  mvi
Jetpack-Compose-MVI-Demo
Demo / Sample Android Project created with Jetpack Compose and MVI Architecture Pattern
Stars: ✭ 114 (+714.29%)
Mutual labels:  mvi
Lastik
Kotlin Multiplatform + Jetpack Compose pet project, based on www.last.fm/api (in development)
Stars: ✭ 37 (+164.29%)
Mutual labels:  mvi
Tracktor-ComposeUI
Track the progress of anything in one place
Stars: ✭ 25 (+78.57%)
Mutual labels:  mvi

Build Status

News Feed App

Simple Android app, displaying list of latest news from chosen news sources. Main features:

  • 70 news sources in 9 categories
  • Share an article function
  • Support both portrait and landscape screen orientation
  • Two pane mode for tablets

Screenshots

Screenshot Screenshot Screenshot

Technical Details

App built with MVI architecture.

Presentation layer is done a bit different from classic MVP. There is Model class instance in Presenter, that holds current view state. Presenter does not send any commands to view, instead of this, presenter changes Model properties, and than View render changes. View input events sent to presenter through event method.

Domain layer works much more like MVP + Clean Architecture approach. Business logic is represented by use cases and repositories. Repositories work with data layer and handle entities mapping. Domain layer knows nothing about Android SDK.

Data layer works directly with Android specific tools: network calls, DB queries (In this case app persistent storage made with Realm) and stuff like that.

Tests

You can find unit test here. Current code coverage is about 40%.

Analytics

App has Analytics module, that used to gather user events and record different metrics. There is AnalyticsKit interface, that can be implemented using any of your favorite app metrics tools, like Fabric, Firebase, AppMetrica or whatever. With this approach you can use any number of metrics tools in any combination, and easy add or remove them.

How To Build Project

This app uses News API to retrieve data. You must provide your own api key in order to build the app. Paste it to project gradle.properties in variable named ApiKey.

Libraries

License

Copyright 2017-2018 Ivan Antsiferov

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].