Work / Charades / Architecture
Charades architecture
A party game that runs entirely on the phone. There is no server and no ads. The only outside service on the money path is RevenueCat, which sells the card packs through the two stores.
last verified 2026-10-30
Known cost a month
Not read
No bill, fee or receipt is recorded in this repo.
What earns money
Pack sales
One-time purchases: Everything $4.99 / ₹199, or one world $2.99 / ₹99. No subscription, no ads.
Sales so far
Not read
RevenueCat and store revenue were not readable on 2026-10-25. 0 ratings and 0 voided purchases in the last 30 days.
How it fits together
Pick something a user does to see its path and what it costs.
$4.99 or $2.99, one time
price is read from RevenueCat, cached for display only
- The paywall shows once, after the third finished round, with a way past it.
- The app asks RevenueCat for the live offering and buys from it.
- The store takes the payment.
- RevenueCat returns the entitlements and the app saves the owned packs on the phone.
Cost
Every number says where it came from.
| Service | Pays for | Today | Grows with | Basis |
|---|---|---|---|---|
| Charades app | Expo app. 5,149 cards ship inside it as a static file | $0 | Nothing | StatedCLAUDE.md; wiki/decisions/offline-first.md |
| Settings, owned packs, history | MMKV on the device. Round history capped at 50 | $0 | Nothing | StatedCLAUDE.md, Persistence |
| RevenueCat | Prices and who owns which pack. 33 one-time products | Not read | Purchases | Not known |
| App Store · Google Play | Take the payment. Keep the purchase record | Not read | Pack sales | Not known |
| EAS Build and Update | Builds and JavaScript-only updates | Not read | Builds and updates | Not known |
| GitHub Actions | Release builds and checks | Not read | Builds | Not known |
What breaks when something fails
| If this fails | The user sees | Their data | Basis |
|---|---|---|---|
| RevenueCat | Packs already bought stay unlocked, from the phone's saved state. Prices come from the last saved copy. A new purchase cannot start. | Safe, on the phone | In codesrc/stores/purchase-store.ts: refresh keeps persisted unlock state |
| EAS Build and Update | Installed apps keep working. They only miss updates. | Safe | AssumedThe game needs no network; no test named |
| GitHub Actions | None. Releases stop; 1.0.34 was built by hand. | Safe | Statedops/release.yml: release.yml refused to start, payments failed |
Where the data goes
| Rounds, settings, owned packs | Stay on the phone |
| Purchases and an anonymous app user id | Go to RevenueCat and the store |
| Ads, analytics, accounts | None exist |
What we do not know yet
- The real monthly bill: no Apple, Google Play, RevenueCat, EAS or GitHub cost is recorded.
- Revenue and number of buyers: RevenueCat and store reports were not read (wiki/entities/baseline-2026-10.md).
- Installs and active devices: Play statistics were not readable (403 on the reports bucket).
- ops/release.yml says nothing has ever shipped on the App Store (updated 2026-10-17). The 2026-10-25 baseline says 1.0.33 went on sale 2026-10-21. One is stale.
- Family and Kids is sold with the same paywall as the film packs. Whether the store audience settings match that is not recorded.