Skip to content

codegax/Nonono

Repository files navigation

Nonono

A Nonogram game I built to learn Kotlin and Android.

What it does

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.

How it's built

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.

Install

Distributed as a free, open-source app:

  • F-Droid (store metadata lives in fastlane/)
  • Signed APK attached to each Codeberg release
  • Google Play

Build

./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)

Why it exists

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.

Privacy

No data is collected. See PRIVACY.md.

License

GPL-3.0-or-later. See LICENSE.

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors