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.
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 aWords 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 theUse 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.
- Local solver
getBoardSolutionOne
was implemented and adjusted based on Ryan Grasell's repo - Local solver
getBoardSolutionTwo
was implemented and adjusted based on Ali Shalabi's repo, here's the article that explains his implementation. - API solver url is from Codebox Boggle solver
- Word definitions are obtained from the Free Dictionary API
- Huge thanks to Andres Rojas for helping me with the initial steps of the project.
Android.mp4
iOS.mp4
Desktop.mp4
Web.mp4
- 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.
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.
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.