https://github.com/reduxkotlin/namegamesampleapp
iOS & Android Kotlin MP app. Guess the Cat & Dog breeds
https://github.com/reduxkotlin/namegamesampleapp
Last synced: 4 months ago
JSON representation
iOS & Android Kotlin MP app. Guess the Cat & Dog breeds
- Host: GitHub
- URL: https://github.com/reduxkotlin/namegamesampleapp
- Owner: reduxkotlin
- Created: 2019-08-22T12:26:45.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-12-15T02:38:49.000Z (almost 2 years ago)
- Last Synced: 2025-05-20T15:12:04.785Z (5 months ago)
- Language: Kotlin
- Size: 3.11 MB
- Stars: 14
- Watchers: 1
- Forks: 5
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# NameGame
__Android Build & Tests__
[](https://circleci.com/gh/patjackson52/NameGameKotlinMpp)
__iOS Build & Tests____
[](https://app.bitrise.io/app/3eaf4fa6c0750504#/builds)
A Kotlin multiplatform (Android/iOS) name game. Player is shown a picture of a cat or dog and must guess the name. User can select from Cats, Dogs. The app utilizes the following:
* [Ktor](https://ktor.io/clients/http-client.html) for networking
* [Kotlinx Serialization](https://github.com/Kotlin/kotlinx.serialization)
* [Multiplatform Settings](https://github.com/russhwolf/multiplatform-settings)
* [ReduxKotlin](https://github.com/reduxkotlin/redux-kotlin/)
## Android
Building and testing the Android App can be completed with:
```./gradlew build```
or install with:
```./gradle androidInstall```
or opened and ran in Android Studio
## iOS
The iOS workspace in `/iOS/NameGame` can be open and ran from xCode or AppCode. A run script has been added to the build phase that will compile the common code into a framework which can be used for the project.
## Architecture
More to come
## "Dumb Views"
Views in this arch are truely 'dumb' - they should contain nearly no logic. They are responsible for rendering the view based on the `ViewState` given to them by the presenter. They are implemented for each platform and utilize native UI SDKs and libs for each platform. Android uses Fragments and iOS uses UIViewControllers.
## Presenters

more to come

## Async Actions
In redux world there are many ways to handle creation of async actions. `Thunks` have been used in this app. `NetworkThunks` and `TimerThunks` both use coroutines to launch concurrent operations that dispatch actions.
## Navigation
In this app, Navigation is considered a side effect of the AppState. The `NavigationMiddleware` handles changing screens based on dispatched actions. The `NavigationMiddleware` takes an implementation of `Navigator` which is implemeneted for each platform.