Files
TREK/client/fastlane
Maurice 8963180006 feat(native): everything the App Store and Google Play submissions need
- iOS: microphone usage text for "Take Video", no-export-compliance flag,
  ExportOptions.plist for App Store Connect uploads, the unused push
  forwarders gone; CI builds with Xcode 26 and lints the property lists.
- Android: version and signing from Gradle properties (unsigned without
  them), R8 with keep rules for TREK's and Capacitor's reflective classes,
  no Auto Backup of the session cookie, no external file provider path,
  template and Firebase leftovers removed, keystores and service accounts
  ignored, full-size adaptive icon layers with a monochrome layer; CI also
  builds the release APK.
- native-release.yml: signed bundle to a Play testing track and archive to
  TestFlight, by hand or on a v* tag, behind the store environment.
- Version handshake: the server reports nativeApi 1, the app refuses a
  server below its minimum and tolerates an app older than the offline copy.
- Address screen: privacy policy link, "Try the demo" and "What is a TREK
  server?"; the privacy link also in the app's server settings. Three new
  native strings in all 27 locales.
- Donation links and the notices asking for one are hidden in the app.
- Store listings for "TREK Travel Planner" in client/fastlane: texts, review
  notes with placeholders, privacy and account deletion page drafts, the
  feature graphic and icon, a length and image check in CI, and a Playwright
  store project with the scripts that turn its captures into screenshots.
- Docs: wiki/Native-Apps.md, README no longer says there is no store app.
2026-10-25 18:37:31 +01:00
..

Store listings

The texts, review notes, policy drafts and images for the App Store and Google Play listings of TREK Travel Planner (com.liketrek.trek). The folder layout is the one fastlane's deliver (App Store) and supply (Google Play) read, so the listings can be uploaded from here; the builds themselves come from .github/workflows/native-release.yml.

Path What
metadata/en-US/ App Store texts: name, subtitle, keywords, description, URLs, release notes
metadata/review_information/ App Review notes and contact. Placeholders only: the review server, accounts and passwords are entered in App Store Connect, never committed
metadata/android/en-US/ Google Play texts, the changelog, and images/ (feature graphic, icon, screenshots)
metadata/privacy-policy.md, metadata/delete-account.md Drafts of the pages published at https://liketrek.com/privacy and https://liketrek.com/delete-account
screenshots/en-US/ App Store screenshots, iPhone 6.9" and iPad 13"

npm run store:check (in client/) checks every text against its store limit and every image for its size and for an alpha channel, which both stores refuse. CI runs it in the metadata job of native.yml.

Screenshots

The screenshots are not committed yet: they are captured from a running TREK with the seeded demo trip, which is a Playwright run and does not run in CI. To make them, from client/:

  1. npx playwright install chromium (once).
  2. npm run store:shots starts its own backend on a throwaway database and the Vite dev server, seeds the demo trip (the same one the wiki pictures show) and captures six screens at five device sizes into e2e/.tmp/store/.
  3. npm run store:promote checks each capture's size, flattens it onto the app background (no alpha) and copies it into screenshots/en-US/ (iPhone 6.9" 1320x2868, iPad 13" 2064x2752) and metadata/android/en-US/images/{phone,sevenInch,tenInch}Screenshots/ (1080x1920, 1620x2880, 1920x1080).
  4. npm run store:graphic rebuilds the feature graphic, now with a crop of the first phone screenshot, and the 512 px icon.
  5. npm run store:check, look through the pictures, commit.

The capture lives in e2e/store/capture.store.ts; the device sizes and screens are listed at its top.

Uploading the listing

With fastlane installed and the App Store Connect API key and Play service account at hand (the same ones the release workflow uses, see wiki/Native-Apps.md), from client/:

fastlane deliver --skip_binary_upload --metadata_path fastlane/metadata --screenshots_path fastlane/screenshots
fastlane supply --skip_upload_apk --skip_upload_aab --metadata_path fastlane/metadata/android --package_name com.liketrek.trek

Both also work from the consoles by hand; the files here are the source of truth for what the listings say.