Apps and clients
Your brand
The app's identity (name, bundle ids, scheme, EAS project, icon, splash, brand colours, typeface,
languages, API/Pusher/Stripe settings) comes from brands/<slug>/brand.json and its assets/
folder, compiled into generated/brand/ by:
npm run brand:apply # the default brand (brands/DEFAULT)
npm run brand:apply -- demo # another one
npm run brand:check # the native config carries only this brand's identity
npm ci, npm start, npm run ios|android and npm run prebuild apply the brand automatically
(the BRAND environment variable picks another). npx expo … run directly uses whatever brand was
applied last, and refuses to start if BRAND names a different one. Never edit generated/ by hand.
Service values may read the environment at bundle time: "env:NAME" or "env:NAME|fallback"
(only EXPO_PUBLIC_*), so keys never need to live in the repository.
Currency, country, the legal page URLs and every business setting are not brand settings: the app
reads them from the backend (GET /api/v1/platform), and they change in the backend's admin.
A new brand starts from the default one:
npm run brand:new -- riverside-league --name "Riverside League" --bundle-id com.riverside.league \
--api-url https://league.riverside.example/api --support-email help@riverside.example \
--logo ~/Downloads/riverside-logo.pngFound a mistake? Tell us.