Skribbl is a SIMPE word guessing game! Through this project, I want to demonstrate how we could use Kotlin Multiplatform technology to build an wonderful app!
- This game got inspired from Philipp Lackner, you can look for original game Doodle Kong
- The original game built with old Android technology, so I want it to be updated with modern stuff
βΊοΈ - Client and Server communicate through RESTful API and Websocket, you can look for my Skribbl-Server here
- It is a guessing word game!
- In each room, each row, there is a player chosen to be a draw player.
- That player have to draw on a canvas about some mistery word so that orther player can guess it.
- The score gained from each guessed is inversely proportional to the time needed to guess.
- Kotlin - Official programming language for Android development.
- Kotlin Multiplatform - Share code between different platform
- Compose Multiplatform - Framework to share UI across multiple platform
- Ktor - Ktor is a framework for building asynchronous server-side and client-side applications
- Kotlin-Serialization - Kotlin multiplatform / multi-format serialization
- Voyager - A pragmatic navigation library for Jetpack Compose, Multiplatform supported
- Settings - A Kotlin Multiplatform library for saving simple key-value data
- Koin - The pragmatic Kotlin & Kotlin Multiplatform Dependency Injection framework
- Koin-compose - Koin Inject in Compose code
- KotlinX-Datetime - KotlinX multiplatform date/time library
This project use KMP-Wizard as template generator This is a Kotlin Multiplatform project targeting Android, iOS. Here are resouces about Kotlin Multiplatform
/composeApp
is for code that will be shared across your Compose Multiplatform applications. It contains several subfolders:commonMain
is for code thatβs common for all targets.- Other folders are for Kotlin code that will be compiled for only the platform indicated in the folder name.
For example, if you want to use Appleβs CoreCrypto for the iOS part of your Kotlin app,
iosMain
would be the right folder for such calls.
/iosApp
contains iOS applications. Even if youβre sharing your UI with Compose Multiplatform, you need this entry point for your iOS app. This is also where you should add SwiftUI code for your project.
com.anbui.skribbl # Root Package
.
βββ composeApp # Project entry point
β βββ src
β β βββ androidMain # Android target module
β β β βββ di # DI for android module
β β β βββ platform # Android Platform actual implementation
β β β
β β βββ iosMain # IOS target module
β β β βββ di # DI for IOS module
β β β βββ platform # IOS platform actual implementation
β β β
β β βββ commonMain # common module for shared code, each code is NOT depend on platform, library or stay in common module of library
β β β βββ composeResource # UI compose resources
β β β β
β β β βββ core # The core module look very similar to normal android module thanks to Compose Multiplatform
β β β β βββ data # data module
β β β β β βββ local # DI for android module
β β β β β βββ remote # DI for android module
β β β β β
β β β β βββ presentation # UI
β β β β β βββ component # Common UI component
β β β β β βββ theme # Comon theme system
β β β β β
β β β β βββ repostory # Implement for domain repository
β β β β β
β β β β βββ utils # Some utilities
β β β β
β β β βββ di # DI for common module
β β β β
β β β βββ domain # domain for common module
β β β β βββ model
β β β β βββ repository
β β β β
β β β βββ feature # Seperate each screen or use case to feature
β β β β βββ createRoom
β β β β βββ ...
β β β β
β β β βββ main # Entry point for common module
β β β β
β β β βββ platform # Expected Implementation
βββ config # Detekt configuation
β βββ detekt
βββ iosApp # Entry point for ios app
- Implement game profile
- Drawing color
- Enhance UI
- Circle or Straight line predict?
Detekt is Static code analysis for Kotlin
Any contributions are welcome! Here are some note
- Open issue to report a bug and make your suggestion.
- Fork this repo and do your changes. Remember to follow project's code style.
- Open PR against
main
branch with nice description and you are good to go π. Skribbl is an open source project developed by me. My purpose is to demonstrate my knowleadge in Android Development, Kotlin Multiplatform, Server Development and share with everyone who interestedβΊοΈ . Please do NOT use for commercial purposes.
This application is released under Apache license 2.0 (see LICENSE). Some of the used libraries are released under different licenses.