Sudoku game to help Ukraine win the war against
russia.
Unique. modern, open source React Native / Expo Sudoku game with a lot of features.
Feel free to create an issue, feature request or pull request if you have any suggestions or ideas.
![]() |
![]() |
![]() |
|---|
Project is using a monorepo approach with TurboRepo to manage multiple packages in a single repository.
The app supports multiple languages, which is detected by expo-localization including:
- Ukrainian
- English
- French
- German
- Spanish
i18n is implemented using Lingui library
The app uses semantic versioning to manage versions with conventional commits meaning each commit and pull request has a strict format, which allows to generate beautiful changelogs and release notes automatically.
A github PR workflow has a step to validate the PR title using commitlint to ensure that the PR title follows the conventional commits format.
Users can automatically see current app version on home page using expo-constants
App uses fingerprint runtimeVersion policy ensure that expo-updates are applied to the correct version of the app.
To automate
user-facingapp versionapp.cofig.jstakes it from thepackage.jsonfile of theapppackage, which is updated automatically by lerna.
Expo tutorial on app versioning
The app uses lerna to manage versions of the packages in the monorepo, generate changelogs for each package if it was changed, and create Github releases.
EAS over the air updates are used to deliver the PRs and production updates to the users, 2 channels are used:
development- for the pull requestsproduction- for the master branch
All changes are represented as pull requests, each pipeline runs:
- Linting to ensure code quality
- Type checking to ensure type safety
- Unit tests to ensure code correctness
- Copy-paste detection to ensure code uniqueness
- Dead code detection to ensure code cleanliness
- CodeQL to ensure code security
- TODO: Maestro tests to ensure app functionality
These strict rules ensure that the code is of high quality, secure, and maintainable. Also this is very helpful for Copilot and other AI tools
Each pull request creates an EAS preview for the iOS, Android and Web platforms, all info is published as comments to the PR, and web deployment is created.
Each commit to the master branch:
- creates an EAS OTA update for the
iOS,AndroidandWebproduction platforms. - creates a new GitHub release with the changelog for the release
Production Web is hosted on Vercel, maybe we will migrate to EAS hosting when it becomes stable.
Each commit
AppStore and Google Play
Special manual GitHub Workflow is used to build and publish the app to the stores.
For the iOS app is published ti the TestFlight, for the Play Market it is published to the internal testing track.
Then after manual review the app can be published to the production track.
For testing on real devices special manual GitHub Workflow is used to build the app for internal distribution.
You need to register your device in the Expo dashboard to be able to install the development build.
The app supports auto-candidates mode, which allows you to fill the candidates automatically based on the current state of the board.
Use your arrow keys to navigate through the Sudoku board, press any number 1-9 to fill the cell.
Tabactivates auto-candidate mode
You can share the current puzzle with your friends via a link, which will open the app with the same puzzle, score, mistakes and timer.
You can switch between light and dark themes, OS/Browser theme is detected automatically initially.
Sharing a link to https://suuudokuuu.com/ will open the app on your device if it is installed, otherwise it will open the web version of the app.
The app uses react-native-reanimated for smooth animations and transitions.
Cell text animations are implemented using single
SharedValueto optimize the performance, prop flag triggers the animation.



