Inspiration

The best way to beat brain rot is simple maths, then work your way up.

We wanted a daily habit built on the tests researchers already use to study attention and memory, with no promise the science does not back. So Brain Gym Daily makes no claim about IQ, brain age or real-world transfer. It gives you five honest minutes a day and shows you your own trend.

What it does

Brain Gym Daily turns six cognitive tests into five minute workouts:

  • Reaction Control, the Go/No-Go test, for response inhibition
  • Colour Conflict, the Stroop test, for selective attention
  • Memory Match, the N-back test, for working memory
  • Spatial Sequence, the Corsi block test, for visual-spatial memory
  • Rule Switch, the task switching test, for mental flexibility
  • Number Sprint, mental arithmetic, for speed

A short calibration finds your level in each one. After that, every exercise adjusts to how you did last time, so it stays hard enough to be worth doing. A session runs five to twenty minutes.

You are scored against your own history. There is no combined score, no percentile and no leaderboard. XP moves you through five ranks, from Starter to Master, and a streak and achievements bring you back tomorrow.

The daily workout is free, with all six exercises. Brain Gym Pro is £4.99, paid once, and adds the exercise library, your whole history with a chart per exercise, every past session in detail, export and import, and a daily insight.

There is no account and no sign-in. Your results never leave your phone, and the app works with no signal at all.

How we built it

  • One codebase: a Next.js 16 static export with React 19 and TypeScript, wrapped in Capacitor 8 for iPhone and Android, styled with Tailwind CSS 4.
  • Everything is stored on the device in IndexedDB. There is no backend.
  • RevenueCat runs the one purchase: one lifetime product and one entitlement across both stores. The paywall reads its price from the store at runtime, so no price is written into the code. Restore purchases sits in Settings and on the Pro page.
  • The same site runs on the web at braingymdaily.app on Cloudflare Pages. In a browser every free round is playable, and the Pro page sends you to the App Store or Google Play.
  • Every exercise cites its source paper, the oldest by Donders in 1868 and the newest by Rogers and Monsell in 1995.
  • The logo is rendered in three.js.
  • iOS builds run on Codemagic. App Store listing copy and screenshots are written through the App Store Connect API, and Android releases go out through the Google Play Developer API.
  • 975 unit tests in Vitest and hundreds of browser tests in Playwright, including automated accessibility checks against WCAG 2.1 AA in both the light and the dark theme.
  • Built by one developer at KITFUNSO LTD, pairing with Claude Code.

Challenges we ran into

  • Apple rejected the first Pro build under Guideline 2.1(b): the purchase did not work on the review device. An async function returned the Capacitor plugin object, and Capacitor's plugin proxy answers every property with a native method, including then. So the promise adopted the plugin as if it were a promise, called a native method named then that never answers, and hung for good. The fix imports the plugin directly, and the test mock now behaves like the real proxy, so the old code fails its own tests.
  • Version 1.0 shipped on iOS with scrolling dead. One config flag switched off the web view's scrolling for the whole app. A guard test now stops it coming back.
  • Google Play would not let us create the Pro product until a build carrying the billing permission had been uploaded, so the release plan had to run in a different order.

Accomplishments that we're proud of

  • Live on Google Play on 8 September and on the App Store on 9 September. Both stores now run 1.2.4, with Pro on sale in both.
  • The App Store privacy label reads "Data Not Collected". The only network call asks RevenueCat whether you bought Pro, and it carries an anonymous id and your store receipt, never your training data.
  • The website lets anyone play a free round of the real test on the page that explains it.

What we learned

  • Never return a Capacitor plugin object from an async function.
  • A released App Store version is frozen, so listing changes ride with the next version.
  • Apple acknowledges a write before it finishes it, so every release script polls until the state has really changed.

What's next for Brain Gym Daily

  • More people finding it: ratings, store search, and short challenge clips of each exercise.

Built With

  • axe-core
  • capacitor
  • cloudflare-pages
  • codemagic
  • indexeddb
  • next.js
  • playwright
  • react
  • revenuecat
  • tailwind-css
  • three.js
  • typescript
  • vitest
Share this project:

Updates

Submission history