Skip to content

ndleyton/OneTwo

Repository files navigation

OneTwo: Tabletop & Board Game Tools

License: MIT Play Store F-Droid

OneTwo is a lightweight, fully open-source Android toolkit designed to streamline your tabletop, board game, and trading card game (TCG) sessions. Built using clean architecture, native Java, and Material Design principles, it provides a distraction-free suite of utilities that stay out of the way of your game.

OneTwo Header

Features

  • MTG Life Counter: Supports 1 to 6 players, full Commander damage matrix tracking (with automatic 21-damage highlight), and sliding-window recent life total history.
  • Turn Timers: Individual player turn timers with intuitive pass-action handling and optional toggles.
  • Intuitive Player Selector (Chooser): An animated, multi-touch custom view (TouchDisplayView) that lets players place a finger on the screen to seamlessly determine who goes first or establish turn order.
  • Custom Dice Roller: Fully configurable dice rolling engine supporting edge-case selections from 2 faces up to 99,999 faces.
  • Chess Timer: Synced chess-style game clocks handling up to 15 players simultaneously.
  • Universal Counter: Persistent trackers utilizing Room DB to record scores, life totals, or match points across multiple sessions.

Download

Platform Link
Google Play Store Download Official Stable Release
F-Droid Archive Get it on F-Droid

Alternatively, you can clone this repository and compile the project directly via Android Studio using Import Project.


Tech Stack & Architecture

OneTwo is built as a highly testable, single-module (:app) native Android application adhering to modern separation of concerns.

  • Language & Minimum SDK: Java 21 / Compile & Target SDK 35 / Min SDK 21.
  • UI Architecture: Jetpack AndroidX Navigation framework, AppCompat, Material Components, and automated XML ViewBinding.
  • State Preservation: ViewModels paired with SavedStateHandle ensure that complex layouts (such as heavy MTG Commander tables) gracefully survive background process death and activity recreation.
  • Data Layer: Persistent storage is driven by Room DB (for structured table tracking) and a custom data source abstraction over SharedPreferences (for rapid serialization of game configs like dice arrays).
  • Test Suite: Decoupled business logic verified via unit tests leveraging Robolectric, JUnit4, and LiveData test utilities.

Development & Workflow

Common Gradle Tasks

Execute these commands from the repository root to verify build health, code quality, and formatting styles before submitting changes:

  • ./gradlew testDebugUnitTest — Runs the local JVM and Robolectric test suite (Highly recommended after data or controller changes).
  • ./gradlew format — Automatically formats changed Java, Gradle, Markdown, properties, and XML files.
  • ./gradlew formatCheck — Evaluates project files for formatting adherence without changing them.
  • ./gradlew lintAll — Runs Android lint alongside native Java Checkstyle compliance checks.
  • ./gradlew qualityCheck — Combines formatting checks and linter suites into a single pass.

Note on JDK Versions: While the codebase is configured for Java 21, local verification via Robolectric 4.11.1 framework shadow classes may fail to load under Temurin 25. It is highly recommended to strictly target JDK 21 within your development environment when running your testing suite.


Screenshots

Interactive Touch Chooser Feature MTG Life Counter View Bare Timer View Universal Counter View Custom Dice Engine View


How to Contribute

Contributions, bug fixes, and localized translations are highly appreciated!

  1. Open a new Issue detailing the feature you want to build or the bug you intend to squish.
  2. Once discussed, you will be invited as a project collaborator to push changes, or you are welcome to fork the project and open a formal Pull Request.
  3. Please run ./gradlew qualityCheck locally before submitting code to ensure continuous integration pipelines pass smoothly.

License

OneTwo is open-source software licensed under the MIT License. See the root code for details.

About

An open-source tabletop utility and companion app for board games, RPGs, and Magic: The Gathering. Features a multi-player MTG life counter, Commander damage tracker, custom dice roller, chess turn timers, and an interactive finger-tap start player selector. Built natively for Android with Java and Material Design.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages