Skip to content

๐Ÿ•น๏ธ A simple Boggle game App using Kotlin and Compose Multiplatform for Android, iOS, Desktop and Web

License

Notifications You must be signed in to change notification settings

alejandro-rios/Boggle-Multiplatform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

42 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Boggle Multiplatform

Build Kotlin

badge-android badge-ios badge-desktop badge-browser badge-browser

A simple Boggle game inspired on this site, the App is implemented with Kotlin and Compose Multiplatform, have fun searching words in a 4x4 board of letters, the idea behind this App is to explore and play with KMP and CMP.

๐ŸŽฒ Game mechanics

You will play with a 4x4 board looking for words with minimum 3 letters, each word guessed will give you points that you'll see in the Score value, the game is finished when you find the total words available for the board, now, here's some details of the game:

  • There's a Score marker next to a Words found/ Total words counter.
  • A Boggle board with a progress line around it (it works but needs to be improved ๐Ÿ˜…)
  • An Use API solver: this option let's you choose either to solve the board with the local or the API solver, the main difference is that the local solver will find less words than the API, is checked by default.
  • English toggle: you can play looking for words on English or Spanish, by default the board is on English, to change for a Spanish board you'll need to first uncheck the Use API solver checkbox.
  • The Rotate button will rotate the board so it might help you to see new words.
  • The New game button will start a new game.
  • The Give me a hint button will help you with a word if you can't think on one.
  • There's a Words counter section from which you'll see the the number of words available per number of letters.
  • You can click on each word guessed to see it's definition.

๐Ÿ“ข Important mentions

๐Ÿ“ฝ๏ธ Showcase

Android

Android.mp4

iOS

iOS.mp4

Desktop

Desktop.mp4

Web

Web.mp4

๐Ÿ“š Tech stack

  • Compose Multiplatform: Declarative framework for sharing UIs across multiple platforms.
  • Ktor: A framework for building asynchronous server-side and client-side applications with ease.
  • Kotlin Coroutines: Simple library used to run Asynchronous or non-blocking calls.
  • Kotlin Serialization: Simple library used to serialize data.
  • KStore: A tiny Kotlin multiplatform library that assists in saving and restoring objects.
  • Jetpack ViewModel: A business logic or screen level state holder.
  • Koin: A smart Kotlin injection library.
  • Turbine: A small testing library for kotlinx.coroutines Flow.
  • Mokkery: The mocking library for Kotlin Multiplatform, easy to use, boilerplate-free and compiler plugin driven.

โš™๏ธ Architecture

The architecture used for the application consists of the following:

  • Clean Architecture.
  • Repository pattern.
  • MVVM pattern.

This project uses a basic UiState (BoggleUiState) to handle the application interface state at a given moment.

๐Ÿ““ Notes and considerations

This project is not finished, there's a lot of improvements that can be made, and I'm pretty sure that the app has some performance issues (on the Compose side) that are going to be fixed.