storebound/examples/demo-app/README.md
CRT 84ef94253c storebound scan: Google Play parity
Play rules verified against the live Policy Center / Play Console Help pages
(checked 2026-10-11, cited in cli/lib/scan/play-rules.ts): restricted
permissions and their declarations (background location, photo / video, All
files access, AccessibilityService, REQUEST_INSTALL_PACKAGES, Health Connect,
full-screen intent, VpnService), prominent disclosure and the in-app privacy
policy, Data safety vs SDK disclosures, Families (certified ad SDKs, AD_ID,
location), AD_ID on targetSdk 33+, 16 KB page sizes (Unity, React Native, NDK,
AGP, prebuilt .so), testing for new personal accounts, Play metadata, ads at
launch, payments outside Play Billing, impersonation. Detection reads manifest
components, accessibility configs, strings.xml, native toolchain versions and a
local build's merged manifest. New fixtures and tests; README table per store.
2026-10-12 00:05:35 +08:00

26 lines
1.8 KiB
Markdown

# Tidy Lists (demo app)
A tiny fictional list app made only to show storebound's **app profile** and the **app screenshot style** (calm
gradient, a clean device frame, headline + subline, no sparkles or badges). One static page with sample data and the
switches a real app needs for store captures: `lang` and `screen` (`lists`, `list`, `share`, `account`). The ids and
URLs in `storebound.config.ts` are placeholders; nothing here talks to a store.
From this folder (needs Bun, ffmpeg, and Playwright's Chromium or Google Chrome):
```sh
bun serve.ts & # the app on http://127.0.0.1:8741
bun ../../cli/index.ts shots capture # raw frames: 2 languages x phone + tablet
bun ../../cli/index.ts shots fonts # Inter subset for the copy
bun ../../cli/index.ts shots render --size ios69,play,feature
bun ../../cli/index.ts shots gallery # store/renders/index.html
bun ../../cli/index.ts check # profile checks: delete-account URL, demo account, terms URL
bun ../../cli/index.ts play data-safety --dry # the Data safety CSV Play imports, from dataSafety in the config
```
`bun ../../cli/index.ts scan` (offline rejection-risk scan) finds four things that are true for a fictional app and
are accepted on purpose in `scan.ignore` of the config, each with its reason: no App Review demo account and no Play
App access credentials (there is no backend to sign in to), the `com.example` package name (the repo placeholder,
never uploaded), and no Play developer account type (there is no account). A real app with accounts must fix the first
two (`review-access` skill), pick its own package name and set `play.accountType`.
Everything it writes (`store/shots/frames`, `store/renders`, `.storebound`) is gitignored.