joreilly /
PeopleInSpace
Kotlin Multiplatform sample with SwiftUI, Jetpack Compose, Compose for Wear, Compose for Desktop, and Compose for Web clients along with Ktor backend.
90/100 healthLoading repository data…
joreilly / repository
Kotlin Multiplatform sample with SwiftUI and Compose (Desktop and Android) clients. Heavily inspired by Wordle game.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Kotlin Multiplatform sample heavily inspired by Wordle game and also Word Master and wordle-solver samples. The main game logic/state is included in shared KMP code with basic UI then in following clients
The shared WordMasterService class exposes the game state as StateFlows:
val boardGuesses = StateFlow<ArrayList<ArrayList<String>>>() // letters entered on each row
val boardStatus = StateFlow<ArrayList<ArrayList<LetterStatus>>>() // per-letter result
val keyStatus = StateFlow<Map<String, LetterStatus>>() // best status per key, colours the keyboard
val guessError = StateFlow<String?>() // validation feedback
Each client renders a board of read-only tiles plus an on-screen keyboard. Key presses call
WordMasterService.addLetter() / removeLetter(), and submitGuess() validates the row against the
word list (surfacing "Not enough letters" / "Not in word list" via guessError) before evaluating it
and updating the flows above. The Compose clients observe state as following (with any updates to those
StateFlow's triggering recomposition)
val boardStatus by wordMasterService.boardStatus.collectAsState()
val keyStatus by wordMasterService.keyStatus.collectAsState()
On iOS we're using the KMP-NativeCoroutines library to map the StateFlow to Swift AsyncSequence. So, for example, our Swift view model includes
@Published public var boardStatus: [[LetterStatus]] = []
@Published public var boardGuesses: [[String]] = []
which are then updated using for example
let stream = asyncSequence(for: wordMasterService.boardStatus)
for try await data in stream {
self.boardStatus = data as! [[LetterStatus]]
}
let stream = asyncSequence(for: wordMasterService.boardGuesses)
for try await data in stream {
self.boardGuesses = data as! [[String]]
}
Any updates to boardStatus or boardGuesses will trigger our SwiftUI UI to be recomposed again.
Selected from shared topics, language and repository description—not editorial ratings.
joreilly /
Kotlin Multiplatform sample with SwiftUI, Jetpack Compose, Compose for Wear, Compose for Desktop, and Compose for Web clients along with Ktor backend.
90/100 healthKotlin /
This is an open-source, mobile, cross-platform application built with Kotlin Multiplatform Mobile. It's a simple RSS reader, and you can download it from the App Store and Google Play. It's been designed to demonstrate how KMM can be used in real production projects.
91/100 healthjoreilly /
Fantasy Premier League Kotlin/Compose Multiplatform sample
86/100 healthPatilShreyas /
📱Sample application built to demonstrate the use of Kotlin Multiplatform Mobile for developing Android and iOS applications using Jetpack Compose 🚀.
71/100 healthjoreilly /
Kotlin Multiplatform sample that uses Gemini Generative AI APIs. Runs on Android, iOS, Desktop and Wasm based Compose for Web.
81/100 healthjoreilly /
Minimal GraphQL based Jetpack Compose, Wear Compose and SwiftUI Kotlin Multiplatform sample (using StarWars endpoint - https://graphql.org/swapi-graphql)
80/100 health