Chess architecture
A chess game that runs entirely on the phone. There is no server, no account and no purchase. AdMob ads are the only way it earns, and the only outside service players touch.
last verified 2026-10-30
Known cost a month
Not read
No bill, fee or receipt is recorded in this repo.
What earns money
Ads only
Banner on Home and the game screen, plus a full-screen ad on every second Rematch.
Earnings so far
Not read
AdMob numbers are pasted by hand into .context/raw/, which is empty.
Release state
Testing only
Play alpha (closed) and TestFlight. Never on Play production or in App Review. Per ops/release.yml, which is unverified (2026-10-13).
How it fits together
Pick something a user does to see its path and what it costs.
Earns ad revenue
the full-screen ad shows on every second Rematch, never during a game
- The player taps Rematch on a result.
- On every second one, the preloaded ad shows first.
- If none is loaded, or it fails, the new game starts at once.
- The ad reloads for next time, retrying up to 3 times, 30 s apart.
Cost
Every number says where it came from.
| Service | Pays for | Today | Grows with | Basis |
|---|---|---|---|---|
| Chess app | Expo app. Rules engine, and a computer opponent at three levels | $0 | Nothing | In codeCLAUDE.md: Backend none; src/lib/ai.ts |
| Saved game and settings | MMKV on the device. One unfinished game | $0 | Nothing | Statedwiki/entities/saved-game.md |
| Google AdMob | Not read | Rematches, ad fill | Not known | |
| EAS Build and Update | Builds the app and ships JavaScript-only updates | Not read | Builds and updates | Not known |
| Play Console · App Store Connect | Testing tracks and listings | Not read | Nothing | Not known |
What breaks when something fails
| If this fails | The user sees | Their data | Basis |
|---|---|---|---|
| Google AdMob | No ad shows. The banner slot keeps its height. If the full-screen ad cannot show, Rematch starts the new game at once. | Safe, on the phone | In codesrc/hooks/use-interstitial-ad.ts; use-rematch.ts |
| EAS Build and Update | Installed apps keep working. They only miss updates. | Safe | AssumedThe game needs no network; no test named |
Where the data goes
| Games, moves, settings | Stay on the phone |
| Accounts, analytics, purchases | None exist |
What we do not know yet
- The real monthly bill: no Apple, Google Play or EAS cost is recorded.
- What ads earn: AdMob reports are not recorded; .context/raw/ is empty.
- ops/release.yml is marked verified: false. It was not read from either store, because no play-service-account.json exists (T033).
- The consent form and ads are not yet checked on a real phone (T037).
- wiki/entities/ads.md is out of date: it says there is no consent form and the full-screen ad shows 1.2 s after any game. The code runs UMP consent and shows the ad on every second Rematch.