Focusix7
A gamified Android focus timer shaped as a boss fight. Every focused minute damages the villain; opening something you were avoiding raises a full-screen overlay that walls it off until you come back. The 846 tests grew around two bugs that reached real testers, a reward exploit and a migration that locked outfits players had already earned.
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 focused minute damages the villain in front of you; giving up damages you. Beat one and the next arrives, down a ladder of five: Mr. 67, The Rizzler, Doomscrolla, The Glitch King and Lord Brainrot. Clear all five and the campaign starts again with what you earned intact.
Finished sessions pay out brain cells and aura, which buy outfits, passive buffs and the six arenas you fight in. Each boss resists more damage than the one before it. The four after Mr. 67 also claw back health while you neglect them, and two of those heal harder once you have wounded them.
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 naming the boss you are fighting, with one button on it that points back at Focusix7. The back button will not dismiss it. A foreground service holding a partial wake lock keeps the session alive when the screen goes off.
Launchers, the dialer, the notification shade, keyboards and anything you explicitly allow stay reachable. A focus app that stops you answering a phone call is a focus app you uninstall.
That allowance is also where the first version leaked. Window transitions need a grace period, or the overlay fires on the system drawing its own animations, and you could spend that grace minimising Focusix7, opening recents and launching something blocked. The grace now stops excusing a forbidden app the moment you reach an allowed surface, and it dropped from 2500 to 1200 milliseconds.
846 tests, and most of them guard the economy
693 across 24 suites for the game, 153 more over the native layer, and five audits that drive a real browser to check geometry no unit test can see. The game suite takes about a minute.
Two bugs earned most of that count. Players could work around a reward gate, which is why every feature since has been written test first. Then a migration added the field that decides whether you own a boss trophy and initialised it empty, so a player who had already beaten four bosses opened the update to find those four outfits locked for good. The instant that grants them had passed, and nothing left in the app would reach it again.
state-helpers.js carries 175 of the 693 on its own. Reward maths, the level curve, daily quests and every migration live there as pure functions, so they can be tested without a device in the loop.
The blocker gets 34 cases in a simulation suite. AccessibilityService behaviour diverges across manufacturers: Samsung, MIUI, ColorOS, OnePlus, Vivo, Honor and a dozen others name their launcher, recents and keyboard packages differently, and several kill background services the AOSP documentation says will keep running.
Zero framework, on purpose
Seven files in www/, loaded straight into a Capacitor 6 Android shell. No build step, and nothing in the shipped app that arrived from a package manager. index.html holds the seven screens and a sprite of 100 SVG symbols, app.js the game loop, bosses.js the roster, state-helpers.js the pure logic, native-bridge.js the call into Java, sfx.js a WebAudio synth that ships no audio files, and styles.css the neon system.
Every villain reuses one rig. The four added after Mr. 67 share his coordinate skeleton, the same shoulder pivots and eye line, so the arm animation written for him drives the whole roster and a new boss costs a sprite and a row of data.
For an app whose hard problems all sit 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
On Google Play as io.focusix7.app. It spent its first months on a closed testing track, and anyone with the link can install it now.