Skip to content

GuilhE/WhosNext

Repository files navigation

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 for sharing the Data Layer between all platforms and 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


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/WhosNext.xcodeproj in Xcode and run standard configuration or use KMP plugin 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

http://www.apache.org/licenses/LICENSE-2.0

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.