{"repo":"joreilly/WordMasterKMP","free":true,"listed":false,"github":"https://github.com/joreilly/WordMasterKMP","clone":"git clone https://github.com/joreilly/WordMasterKMP.git","description":"Kotlin Multiplatform sample with SwiftUI and Compose (Desktop and Android) clients. Heavily inspired by Wordle game.","language":"Kotlin","stars":106,"topics":["android","kotlin","ios","swift","swiftui","compose","compose-desktop","jetpac","jetpack-compose","kotlin-multiplatform"],"license":"Apache-2.0","category":"mobile-apps","readme_excerpt":"WordMasterKMP 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 - iOS (SwiftUI) - Android (Jetpack Compose) - Desktop (Compose for Desktop) Screenshots Shared KMP game logic/state The shared WordMasterService class exposes the game state as StateFlow s: 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) On iOS we're using the KMP-NativeCoroutines library to map the StateFlow to Swift AsyncSequence . So, for example, our Swift view model includes which are then updated using for example Any updates to boardStatus or boardGuesses will trigger our SwiftUI UI to be recomposed again. Full set of Kotlin Multiplatform/Compose/SwiftUI samples PeopleInSpace (https://github.com/joreilly/PeopleInSpace) GalwayBus (https://github.com/joreilly/GalwayBus) Confetti (https://github.com/joreilly/Confetti) BikeShare (https://github.com/joreilly/BikeShare) FantasyPremierLeague (https://github.com/joreilly/FantasyPremierLeague) ClimateTrace (https://github.com/joreilly/","default_branch":null,"files":null,"tree":[],"storefront":"/r/joreilly","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/joreilly/WordMasterKMP/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}