Skip to content

A take on dynamic feature modularization, kotlin coroutines, MVI and unidirectional data flow. WIP

Notifications You must be signed in to change notification settings

aliumujib/Artic

Repository files navigation

HitCount

Artic

Artic is an attempt to build a full featured android app that pulls news articles from a Wordpress blog using dynamic feature modularization, kotlin coroutines and unidirectional data flow.

UI

The UI was graciously designed by Ridwan.

Architecture

The app leverages uni-directional data flow the in building a predictable state machine for every screen. To achieve this, the ViewModel class of the Android Architecture Components and Kotlin Flow were used. A lot of the architecture decisions were inspired by the talk detailed in these slides.

Source: Building MVI apps with Roxie.


Another interesting part of the architecture is the use of dynamic feature modularisation to seperate feature related code into the appropriate modules and Dagger 2 for dependency injection in the feature modules.

Source: Android Components Architecture in a Modular Word.

Libraries

Dagger2 - Dagger2 was used for dependency injection.
Kotlin Flow - Flow was used for threading and data stream management.
Retrofit2 - Network calls
AndroidKtx - For cool extensions to Android classes.
Architecture Components - For Lifecycle managment in the presentation layer, persistence.
MockK - For mocking test dependencies.
Truth - For Unit test assertions etc.
Konveyor - For generating random data for tests.
Espresso - For UI testing.

Todo

I had a lot of fun building this. There are some improvements I intend to make.

  • More tests.
  • Build settings screen with Jetpack Compose
  • Complete article search
  • Animations
  • Dark mode

Build Instructions

  • Clone repository.
  • Run with Android Studio 4.0 canary 3 and above.

References

License

Copyright 2020 Abdul-Mujeeb Aliu

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.

About

A take on dynamic feature modularization, kotlin coroutines, MVI and unidirectional data flow. WIP

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages