Skip to content

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.png

Found a mistake? Tell us.