Eiffel

screenshot of Eiffel

Redux-inspired Android architecture library leveraging Architecture Components and Kotlin Coroutines

Overview

Eiffel is an Android architecture library inspired by Redux and built using Architecture Components and Kotlin Coroutines. It provides a reactive approach to building ViewModels and simplifies common Android-related tasks.

Features

  • Kotlin Coroutines and Flow: Eiffel has first-class support for Kotlin Coroutines and Flow, allowing for easy integration of asynchronous operations.
  • Middleware Functionality: The library includes powerful middleware functionality in the form of Interceptions, which can be defined using a simple DSL.
  • Extended State Observing: Eiffel provides extended state observing capabilities, allowing developers to subscribe to specific state properties only.
  • State Restoration: Eiffel offers a convenient way to restore part or all of a state after process death.
  • BindableState Class: This class enables the adaptation of one or more states for use with Data Binding.
  • Intent and Fragment Argument Handling: Eiffel simplifies the passing of Intent extras and Fragment arguments to a ViewModel's initial state.
  • ViewEvent Implementation: The library includes a ViewEvent for handling one-off events inside of states.
  • Resource Wrapper: Eiffel provides a resource wrapper, allowing for the association of a status with LiveData.
  • Delegated Properties: Developers can use delegated properties to lazily access a ViewModel inside an Activity or Fragment.
  • Debug Mode: Eiffel offers a dedicated debug mode that traces all dispatched actions, interception calls, and state updates.
  • Testing Module: The library includes a separate testing module with JUnit rules for testing async behavior and helpers for testing a chain of Interceptions in isolation.

Summary

Eiffel is an Android architecture library that leverages Redux concepts, Architecture Components, and Kotlin Coroutines to provide a reactive and simplified approach to building ViewModels. It offers a range of features such as Kotlin Coroutines support, advanced state observing, middleware functionality, and more. By installing and utilizing Eiffel, developers can streamline their Android app development process, enhance code readability, and improve overall architecture.

Redux

Redux is a state management library for JavaScript apps that provides a predictable and centralized way to manage application state. It enables developers to write actions and reducers that update the state in response to user interactions, server responses, and other events, and can be used with a variety of front-end frameworks and back-end technologies.