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
- Host: GitHub
- URL: https://github.com/guilhe/whosnext
- Owner: GuilhE
- License: apache-2.0
- Created: 2024-03-08T21:21:32.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-11-05T15:43:59.000Z (2 months ago)
- Last Synced: 2024-11-07T10:43:03.717Z (2 months ago)
- Topics: android, compose-multiplatform, desktop, ios, kotlin, kotlin-multiplatform, swift, wasm
- Language: Kotlin
- Homepage: https://guilhe.github.io/WhosNext/
- Size: 31.5 MB
- Stars: 52
- Watchers: 2
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Who's Next!?
A simple application that lets you know when it’s time to change the goalkeeper in a football game with friends.
## 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 [KMP-ObservableViewModel](https://github.com/rickclephas/KMP-ObservableViewModel)
#### shared-ui
- Components
- Screens
- Themes
- Resources#### androidApp
- Uses Compose Multiplatform
`./gradlew :androidApp:installDebug`
#### iosApp
- Uses SwiftUI and Compose Multiplatform
To run it open `iosApp/WhosNext.xcodeproj` in Xcode and run standard configuration or use [KMP plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform) for Android Studio and choose `iosApp` in `run configurations`.#### desktopApp
- Uses Compose Multiplatform
`./gradlew :desktopApp:run`
#### browserApp
- Uses Compose Multiplatform
`./gradlew :browserApp:wasmJsBrowserDevelopmentRun`
## UI
## 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 atUnless 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.