Suuudokuuu
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.
Play now! Do not hesitate
]
Features
Monorepo architecture
Project is using a monorepo approach with TurboRepo to manage multiple packages in a single repository.
Internalization(i18n)
The app supports multiple languages, which is detected by expo-localization including:
- Ukrainian
- English
- French
- German
- Spanish
i18n is implemented using Lingui library
App versioning and release management
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
Native versions
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
Release management
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.
Enterprise-grade CI/CD
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:
- Formatting and 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
Pull requests
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.
Master branch
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.
Internal distribution and testing
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.
Auto-candidates
The app supports auto-candidates mode, which allows you to fill the candidates automatically based on the current state of the board.
Web keyboard support
Use your arrow keys to navigate through the Sudoku board, press any number 1-9 to fill the cell.
Tabactivates auto-candidate mode
Sharing puzzles
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.
Theming support
You can switch between light and dark themes, OS/Browser theme is detected automatically initially.
Universal links
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.
Animation
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.
Packages
- app - React Native / Expo application package
- generator - Sudoku puzzle generator
- app-tests - Maestro tests for the app package
Acknowledgements
Our Hell and Infinity difficulty levels stand on data curated by the wider Sudoku community over many years. Huge thanks to:
- t-dillon/tdoku for the
puzzles2_17_cluedataset (BSD 2-Clause licensed) behind our Hell-difficulty corpus, and to Gordon Royle of the University of Western Australia, who originally compiled the 17-clue collection; it was later completed and proven exhaustive bychampagne,blue, and other members of the Enjoy Sudoku forum. - The Enjoy Sudoku forum community and
champagne, who compiled the "hardest sudokus" database behind most of our Infinity-difficulty corpus. - Arto Inkala, creator of Everest and AI Escargot, and the Enjoy Sudoku forum authors behind Golden Nugget, Kolk, Patience, Discrepancy, Fata Morgana, Cigarette, Imam Bayildi, Red Dwarf, Second Flush, Silver Plate, First Peak, and Platinum Blonde, the named world-record puzzles that round out our Infinity level.
- Nicolas Juillerat, creator of Sudoku Explainer, and the Enjoy Sudoku forum's Patterns Game community, whose SE rating methodology our difficulty scale follows.
License
Suuudokuuu is licensed under the O'SAASY License — an MIT-style license with one condition: you may not offer the Software itself as a competing hosted or SaaS product. Learn more at osaasy.dev.



