Skip to content

CescFe/numpairs

Repository files navigation

NumPairs

NumPairs is a native Android puzzle game inspired by arithmetic grid challenges.

The project is being built iteratively, starting with a small playable prototype and expanding later with stronger gameplay rules, better presentation, and more game modes.


Current Status

Implemented baseline: v1 - Product Polish & Technical Hardening

Historical snapshots: prd-v0.md, prd-v1.md

Active product milestone: v2 - Puzzle Generation & Replay Loop

Canonical product reference: prd-v2.md


Tech Stack

  • Kotlin
  • Jetpack Compose
  • Gradle Kotlin DSL
  • Android Studio

Domain Modeling

The puzzle core uses a small domain layer guided by the project's ubiquitous language and DDD-inspired modeling.

Current core concepts:

  • Puzzle
  • Board
  • Tile
  • Expression
  • Operator
  • Strip

Project Structure

app/
├── src/main/java/org/cescfe/numpairs/
│   ├── MainActivity.kt
│   ├── data/puzzle/seed/
│   ├── domain/puzzle/
│   ├── feature/game/
│   │   ├── GameRoute.kt
│   │   ├── presentation/
│   │   └── ui/
│   │       └── components/
│   └── ui/
│       ├── navigation/
│       └── theme/
docs/
├── product/
├── technical/adr/
├── game-rules.md
└── ubiquitous-language.md

Current responsibilities are split as follows:

  • data/puzzle/seed: handcrafted puzzle data used by the current baseline and future tutorial-mode foundation.
  • domain/puzzle: puzzle rules, validation, assignments, and core domain types.
  • feature/game: the Game feature entry point plus its presentation and ui subpackages.
  • feature/game/ui/components: Game-specific Compose building blocks such as tiles and chips.
  • ui/navigation and ui/theme: app-level navigation wiring and shared theming.

Documentation

  • Canonical PRD: prd-v2.md
  • Product Requirements Documents: docs/product/prd/
  • Product roadmap: roadmap.md
  • UX decisions: docs/product/ux-decisions.md
  • Architectural Decision Records: docs/technical/adr/
  • Game rules: docs/game-rules.md
  • Ubiquitous Language: docs/ubiquitous-language.md

Run Locally

  1. Open the project in Android Studio
  2. Sync Gradle
  3. Run on emulator or Android device

Testing

# Run unit tests
./gradlew testDebugUnitTest

# Run instrumented UI tests on a connected emulator/device
./gradlew connectedDebugAndroidTest

Code Quality

# Check all formatting
./gradlew spotlessCheck

# Apply formatting
./gradlew spotlessApply

# Run all quality checks
./gradlew check

License

MIT License

About

A cleanly designed Android number puzzle game focused on product, UX, and robust domain-driven architecture.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors

Languages