A Nonogram game I built to learn Kotlin and Android.
You pick a difficulty or play the daily puzzle, and you solve a nonogram.
- Tap a cell to fill it (or, with the toggle at the bottom, to mark it as empty).
- A wrong tap costs you a life. Three wrongs and you lose. A wrong tap also reveals what the cell should have been, so you can keep going.
- Prefer no pressure? Sandbox mode in settings drops the lives entirely.
- Solve the puzzle and the screen says you won.
Four modes: a Daily puzzle that's the same for everyone on the same day (with a streak counter), Levels (ten a day, easy to hard), Endless (real pixel-art pictures, no repeats until you have seen them all), and Pictures (a curated gallery, or turn one of your own photos into a puzzle). Three difficulty tiers, per-tier best times and solve counts, light/dark/Material You theming, and a colour-blind-safe palette.
No accounts, no ads, no network. A friends-only, self-hosted score-sharing server is a possible future idea, never a requirement; the app is fully usable forever offline.
| Area | What |
|---|---|
| App | Kotlin, Jetpack Compose, Material 3 |
| State | ViewModel + StateFlow |
| Build | Gradle Kotlin DSL |
One module: :app. Pure logic (Puzzle, Board, the solver, the generator,
the image-to-nonogram pipeline) lives in domain/ with no Android imports;
persistence in data/; Compose screens and view models in ui/. Plain Kotlin
where I can manage it; Compose only where there's actually a UI.
The application id is dev.codegax.nonono.
Distributed as a free, open-source app:
- F-Droid (store metadata lives in
fastlane/) - Signed APK attached to each Codeberg release
- Google Play
./gradlew :app:assembleDebug # build the debug APK
./gradlew :app:installDebug # install on a running emulator/device
./gradlew :app:testDebugUnitTest # run unit tests
./gradlew :app:assembleRelease # minified release APK (R8)I wanted to learn Kotlin. I picked a small game I'd actually play. It's open source so other people can pick it up too.
No data is collected. See PRIVACY.md.
GPL-3.0-or-later. See LICENSE.