Fix the step, not just the final answer

Counterstep Pocket is native Android algebra practice built around one idea: correcting an answer should not erase how you got there. Enter an expanded expression, see which term needs attention, request a hint, and repair the line while retaining the original attempt and hint history.

For example, entering 2x+3 for 2(x+3) produces feedback on the constant. Repairing it to 2x+6 records a successful repair without relabeling the first attempt as independently correct.

Download the verified 0.5 preview and matching source | Source and setup instructions

What works

Free practice, term-specific feedback, progressive hints, saving and sharing work without connecting a store. Unfinished expressions survive closing and reopening the app. Edited answers must be checked again; earlier attempts remain in the record. Sharing opens Android's chooser with a personal practice note, not an authenticated grade.

The optional mixed-sign pack adds practice with negative coefficients and constants. RevenueCat's SDK entitlement response controls access; a saved study file cannot grant it. Purchase callbacks do not replace newer practice work.

RevenueCat integration

The Android app uses RevenueCat SDK 9.9.0 to load its current offering, display the product and sandbox price in a native paywall, make a Test Store purchase, refresh access, and restore the same sandbox customer's current access. The mixed_signs package and entitlement are connected to a non-consumable practice-pack product. Core practice, hints and saving remain free; the USD 2.99 price shown is a sandbox display price, not a real charge.

The demo captures RevenueCat's actual Test Store dialog and separate cancellation, failure and success outcomes. It then shows process restart, retained draft, restored test access and a correctly answered premium exercise. An authenticated RevenueCat API read separately confirmed the 0.5 preview's sandbox purchase and active entitlement. The redacted verification summary is included in the release.

How it was built and checked

Kotlin, native Android views, a deliberately narrow integer-linear checker, Gradle and GitHub Actions. There is no OCR or conversational model running inside the application.

Verified application run 36161609006 passed 108 JVM tests, 26 Android emulator tests and eight end-to-end workflow assertions. These cover repair history, cancellation and failure without losing work, a successful SDK entitlement response, process restart, Test Store restore, pack unlock and premium-answer checking.

An actual checkout exposed a missing Android Main coroutine dispatcher after the provider accepted a purchase. Version 0.5 fixes that dependency and adds a native regression test. The later successful run, not the earlier failed run, supports the verification claim.

The APK and matching source archive come unchanged from application commit b903185484d71eda809718e9d7584670ccfe9c3b. Release packaging checks their hashes and all 15 public downloads without authentication. The captioned demo contains edited, original-speed Android emulator footage. Full-resolution screenshots, icon, checksums and reproduction instructions are included.

Try it and understand the scope

Install the debug preview on Android API 26 or later. Try the free exercise first. For the optional purchase flow, follow START-HERE.md and explicitly connect the provided public Test Store SDK key. Remembering that public key is opt-in. No administrative secret belongs in the app. Preserve practice notes before replacing an older APK signed by a different build runner.

This is a development preview, not an app-store release. All demonstrated purchases are sandbox events; no real revenue is claimed. Test Store restoration is not a Google Play or cross-account restore test. The device evidence is from an Android API 35 emulator, not a physical phone. Software-test results are not evidence of measured learning improvement.

Provenance and next steps

Original native implementation by Joseph Ayanda, adapted from his earlier Counterstep practice concept with substantial AI assistance for implementation, debugging, tests and submission preparation. Original code is MIT licensed; third-party licenses remain applicable. The separate Amazon Relay and Prom web entries are unchanged.

Next: learner usability feedback, physical-device checks and a separately configured production-store release.

Built With

Share this project:

Updates

Submission history