Focusix7
A gamified Android focus timer. The blocker runs on Android's AccessibilityService and throws a full-screen overlay when you open something you were avoiding. 283 tests, because Samsung, MIUI, OnePlus and Pixel each bend the rules their own way.
A focus timer that only counts down is a suggestion. The phone is still right there, and opening the app you were avoiding costs nothing.
Focusix7 makes it cost something. Every minute you focus weakens Mr. 67, the brainrot villain; giving up strengthens him. You earn brain cells and aura, spend them on outfits and passive buffs, and push a world focus meter toward 100 to banish him. Then he comes back.
The blocker is the actual product
The game layer is the reason to open it. The blocker is the reason it works.
While a session runs, an Android AccessibilityService watches foreground-app changes. Open something outside your allowlist and a full-screen overlay comes up with one button on it, pointing back at Focusix7. A foreground service with a wake lock keeps the session alive when the screen goes off.
Launchers, the dialer, system UI, keyboards and anything you explicitly allow stay reachable. A focus app that stops you answering a phone call is a focus app you uninstall.
283 tests, and most of them are about other people's phones
Five suites, around three seconds to run. The count is not diligence, it is Android.
AccessibilityService behaviour diverges across manufacturers. Samsung, MIUI, OnePlus, ColorOS and stock Pixel each handle background service lifetimes, overlay permissions and battery optimisation their own way, and several of them kill services the AOSP documentation says will keep running. The test suite covers game logic and reward maths, but the part that catches real bugs is the cross-OEM behaviour around bridging into native code.
Reward maths and state migration live in a separate pure module, state-helpers.js, precisely so they can be tested without a device in the loop.
Zero framework, on purpose
The whole game is vanilla HTML, CSS and JavaScript in www/, wrapped in a Capacitor 6 Android shell. No build step. One index.html holding the six screens and an 87-symbol SVG sprite, one app.js for game logic, one stylesheet carrying the neon design system and the SVG joint-rig animation.
The native side is small and specific: a Capacitor plugin exposing start, stop, state and permissions, the accessibility service, the overlay, and the foreground service.
For an app whose interesting problems are all on the native side, a JavaScript framework would have added a build pipeline and a dependency tree to solve problems this app does not have.
Where it is
Closed testing on Google Play as io.focusix7.app. The repository holds the full source, but a build from it is unsigned and cannot receive updates as Focusix7. The Play Store build is the real one.