Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/GuilhE/WhosNext

Kotlin Multiplatform Timer
https://github.com/GuilhE/WhosNext

android compose-multiplatform desktop ios kotlin kotlin-multiplatform swift wasm

Last synced: about 2 months ago
JSON representation

Kotlin Multiplatform Timer

Lists

README

        

icon

# Who's Next!?
A simple application that lets you know when it’s time to change the goalkeeper in a football game with friends.


android
ios
desktop
wasm

## Details

Uses [Kotlin Multiplatform](https://www.jetbrains.com/kotlin-multiplatform/) for sharing the _Data Layer_ between all platforms and [Compose Multiplatform](https://www.jetbrains.com/lp/compose-multiplatform/) to create a cross-platform _Ui Layer_. It also uses SwiftUI to provide an additional iOS _Ui Layer_.

Supports: `jvm` (android and desktop), `native` (iOS) and `wasm` (web)

### Modules

#### shared

- UDF architecture implemented with Model-View-Intent
- Finite State Machine to validate state transitions
- State emission by Kotlin Flow
- State restoration (both for UI State and FSM State)
- ViewModel shared by [KMM-ViewModel](https://github.com/rickclephas/KMM-ViewModel)



fsm wn wnp

#### shared-ui

- Components
- Screens
- Themes
- Resources

#### androidApp

- Uses Compose Multiplatform

`./gradlew :androidApp:installDebug`

#### iosApp

- Uses SwiftUI and Compose Multiplatform

To run it open `iosApp/iosApp.xcodeproj` in Xcode and run standard configuration or use [KMM plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile) for Android Studio and choose `iosApp` in `run configurations`.

#### desktopApp

- Uses Compose Multiplatform

`./gradlew :desktopApp:run`

#### browserApp

- Uses Compose Multiplatform

`./gradlew :browserApp:wasmJsBrowserDevelopmentRun`

## UI


android  
ios  
desktop
wasm

## LICENSE

Copyright (c) 2024-present GuilhE

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

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.