# Store badges (official artwork, self-hosted)

Third-party brand artwork that the public website serves from its own origin, so no request ever leaves
`tellersonne.app` (strict CSP, no third-party requests at runtime). The files are the **unmodified originals** from
the two vendors' own marketing tools – never recoloured, redrawn, stretched or combined with other elements.

| File | Content | Source (downloaded 17.09.2026) | Terms |
| --- | --- | --- | --- |
| `app-store-badge-de.svg` | "Laden im App Store", black badge, German | `https://toolbox.marketingtools.apple.com/api/badges/download-on-the-app-store/black/de-de?size=250x83` (Apple Marketing Resources, App Store badges) | Apple Marketing Resources and Identity Guidelines for Channel Affiliates and Apple Developer Program License Agreement. Apple, the Apple logo and the App Store badge are trade marks of Apple Inc. |
| `app-store-badge-en.svg` | "Download on the App Store", black badge, US/UK | `https://toolbox.marketingtools.apple.com/api/badges/download-on-the-app-store/black/en-us?size=250x83` | as above |
| `google-play-badge-de.png` | "Jetzt bei Google Play", generic web badge, German | `https://play.google.com/intl/de_de/badges/static/images/badges/de_badge_web_generic.png` (Google Play Badge Generator) | Google Play and the Google Play logo are trade marks of Google LLC; use under the Google Play badge guidelines (Brand and asset guidelines for partners). |
| `google-play-badge-en.png` | "Get it on Google Play", generic web badge, English | `https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png` | as above |

## Rules the pages follow

Implemented in `src/ui/parts.tsx` (`StoreBadges`) and `src/styles.ts` (`.a-store-badge*`):

- **Only for a store the app is really in.** `storeAvailability` (`src/env.ts`) shows the App Store badge only when
  `IOS_APP_STORE_ID` or `APP_STORE_URL` carries a real numeric listing ID, and the Google Play badge only when
  `PLAY_STORE_URL` is a `play.google.com/store/apps/details?id=…` listing. A TestFlight link, a closed Play test, a
  store search page or the placeholder `id0000000000` render **no** badge – the page shows the beta note instead.
  Both vendors forbid advertising a download that does not exist yet.
- **Size.** App Store badge 40 px high (Apple's minimum for the web). The Google Play web badge carries its own
  clear space inside the image, so it is rendered 60 px high; its wordmark then matches the App Store badge and the
  badge stays far above Google's 60 px minimum width.
- **Clear space.** At least 10 % of the badge height around the App Store badge (Apple) and a quarter of the badge
  height around the Google Play badge (Google); the CSS gives both 10 px, and nothing overlaps them.
- **Alt text** is the wording of the badge itself ("Laden im App Store" / "Download on the App Store",
  "Jetzt bei Google Play" / "Get it on Google Play") in the language of the page – the image *is* the button.
- **Language.** German pages get the German artwork, English pages the English (US/UK) artwork.

## Updating

Both vendors regenerate their artwork occasionally. Download the file again from the URL above, drop it in
unchanged, and check `apps/web/test/pages.test.ts` ("store badges") plus the licences page, which repeats this
trade-mark notice for visitors.
