Open Assets
Examples

Tax Days

The Tax Days example: App Store and Google Play screenshot collections sharing one 38-locale strings file, with phone and tablet sizes written through outFile.

Tax Days tracks days spent in each country for tax residency. Its asset project shows one strings file feeding both stores.

Tax Days App Store screenshots rendered with Open Assets
CollectionSource sizeTemplatesLocalesExports
App Icon icon1024×10241-1024px (1024×1024), 512px (512×512)
App Store Screenshots screenshots440×9568en, ar, de, jaiPhone 6.9" (1320×2868), iPhone 6.7" (1290×2796), iPhone 6.5" (1284×2778), iPhone 6.1" (1179×2556)
Play Store Screenshots screenshots-android440×9788en, dePhone (1080x2400) (1080×2400), 7" Tablet (1200×1920), 10" Tablet (1600×2560)

Source: examples/tax-days on GitHub.

Techniques

  • Two stores, one strings file. The screenshots collection (440x956 source, four iPhone sizes) and the screenshots-android collection (440x978 source, phone plus 7 and 10 inch tablets) both point at the same localizations.json. The file defines 38 locales. Each collection picks its own subset with locales: en, ar, de, ja for iOS and en, de for Android.
  • Separate templates per platform. Android templates live in assets/screenshots-android/ with their own captures in public/screenshots-android/, because the aspect ratio and the device chrome differ.
  • Per-locale captures. Like Skimmer, device images use data-locale-img and swap to public/screenshots/<lang>/ when the locale changes.
  • Tailwind v4 theme. Gradients, glow orbs and pill badges come from classes defined in src/styles.css (bg-td-gradient, glow-orb, pill).
  • outFile layout. Renders land in exports/screenshots/{locale}/<size>/{template}.png and exports/screenshots-android/{locale}/<size>/{template}.png.

Run it

cd examples/tax-days
npm install
npm run dev
npm run render

Render one platform or one language while iterating:

npx open-assets render --collection screenshots-android --locale de

What to copy

  • The two-collection layout if you ship on both App Store and Google Play. See Google Play.
  • A single localizations.json with per-collection locales, so translations are written once.

Last updated on

On this page