Expressus

A Kotlin Multiplatform sample app of a coffee machine, used as a playground for UI state management with Compose and SwiftUI. It illustrates ideas from related articles.

Share on XLicense: Apache-2.0

Overview

Expressus is a Kotlin Multiplatform sample app of a coffee machine. It serves as a playground for UI state management and illustrates ideas from a set of related articles. The shared module uses a Model-View-Intent architecture, a finite state machine to validate state transitions, and state restoration. The UI is built with Compose Multiplatform on desktop, Jetpack Compose on Android, and SwiftUI on iOS.

Key features

  • Model-View-Intent architecture in a shared module
  • Finite state machine that validates state transitions
  • State restoration for both UI state and FSM state
  • UI state emitted through Kotlin Flow and Swift Combine
  • Compose Multiplatform, Jetpack Compose and SwiftUI front ends

Best for

Kotlin Multiplatform developers who want a small worked example of MVI with a state machine across Android, iOS and desktop. It is a sample, not a library.

Upstream
GuilhE/Expressus
Fork on GitHub
Guo-astro/Expressus
Upstream stars
114
Category
Developer tools and infrastructure
Language
Kotlin
License
Apache-2.0
Forked
2022-08-14
Sync status
Diverged from upstream