๐Ÿ›’ Bringo

Customer App

Rebranding

Give the app your own identity: package name, display name, icon, splash and colours. Work top to bottom.

1. Package name / bundle id

The app ships as com.bringo.customer. This id is how Google Play and the App Store identify your app โ€” change it before you create Firebase apps, store listings or signing keys, because on Play it can never be changed after the first upload.

Pick a reverse-domain id you control, e.g. com.yourcompany.shop. Lowercase letters, digits and dots only; each segment must start with a letter.

The quick way

cd customer_app
flutter pub global activate rename
flutter pub global run rename setBundleId --targets android,ios --value com.yourcompany.shop

That covers most files, but it does not touch the Firebase config, and depending on the version it may leave the Kotlin source directory behind. Always finish with the checklist below.

Every place the id appears

android/app/build.gradle.kts
Two entries: namespace and defaultConfig.applicationId. They should match.
MainActivity.kt โ€” the package line
android/app/src/main/kotlin/โ€ฆ/MainActivity.kt starts with package com.bringo.customer. It must match the namespace.
MainActivity.kt โ€” the folder path
The folders mirror the id: kotlin/com/bringo/customer/ must become kotlin/com/yourcompany/shop/. A mismatched folder still compiles but crashes on launch with ClassNotFoundException โ€” the most common rebranding mistake.
android/app/google-services.json
package_name must equal the new applicationId, or the Gradle plugin fails the build outright. Easiest fix: register the new id in Firebase and download a fresh file.
iOS bundle identifier
PRODUCT_BUNDLE_IDENTIFIER in ios/Runner.xcodeproj/project.pbxproj โ€” it appears once per build configuration (Debug/Release/Profile), plus the .RunnerTests variants. Xcode's target settings change them all at once.
ios/Runner/GoogleService-Info.plist
BUNDLE_ID must match the new iOS bundle id โ€” replace the file from Firebase after registering the new id.
Deep links
AndroidManifest.xml (android:host) and ios/Runner/Runner.entitlements (applinks:) carry your domain, not the package id โ€” update both to your site. See Deep Linking.

Rename the Kotlin folder

cd customer_app/android/app/src/main/kotlin
mkdir -p com/yourcompany/shop
git mv com/bringo/customer/MainActivity.kt com/yourcompany/shop/   # or plain mv
# then edit the first line of MainActivity.kt to: package com.yourcompany.shop

Check your work

From the app folder, these should return nothing:

grep -rn "com.bringo.customer" android/ ios/ lib/

And this should list the new path only:

find android/app/src/main/kotlin -name MainActivity.kt

Then do a clean build โ€” a stale build directory hides id problems:

flutter clean && flutter run

2. App display name

There are two names, set in different places:

a) Launcher name (under the app icon on the home screen)

Android
android/app/src/main/AndroidManifest.xml โ†’ android:label="Your Brand"
iOS
ios/Runner/Info.plist โ†’ CFBundleDisplayName = Your Brand

b) In-app brand name (onboarding header, splash, account footer)

This is driven by the Business Name set in the backend: Admin โ†’ Settings โ†’ Business Name. The app fetches it in its config (business.name) and shows it automatically โ€” change it in admin and it updates in the app on next launch, no rebuild needed.

If the backend value is empty, the app falls back to a hardcoded default. That default (and the native launch-screen text, which shows before config loads) lives in code:

Fallback default
lib/shared/models/app_config.dart โ†’ BusinessInfo.fromJson (?? 'Your App Name')
Native/in-app splash text
lib/features/splash/splash_screen.dart
โ„น๏ธ
The onboarding screen header and account "ยท v1.0" line read business.name from the backend config; they no longer hardcode a brand name.

3. App icon & logo

The icon config already ships in pubspec.yaml pointing at assets/images/app_icon.png. Replace that 1024ร—1024 PNG, then regenerate both platforms:

cp my-icon.png  customer_app/assets/images/app_icon.png
flutter pub get
dart run flutter_launcher_icons

This regenerates every Android mipmap-* density and the iOS AppIcon.appiconset. Swap the in-app splash/login logo by replacing assets/images/logo.png and assets/images/logo_white.png.

๐Ÿ–ผ๏ธ
Full cross-app walkthrough (both platforms, all 3 apps): Change the App Logo.

4. Splash screen

The app shows a native launch screen, then an in-app splash. For the native one, use flutter_native_splash:

dev_dependencies:
  flutter_native_splash: ^2.4.1

flutter_native_splash:
  color: "#0c831f"
  image: "assets/branding/splash_logo.png"
dart run flutter_native_splash:create

The in-app splash (logo shown while the app loads data) lives in lib/features/splash/splash_screen.dart โ€” swap the logo asset there to match.

5. Colours & theme

The app's primary colour comes from your admin Theme (sent at startup) โ€” see Branding & Homepage. The built-in colour presets and the default are defined in lib/core/theme/theme_presets.dart if you want to change the bundled default.

6. Deep link scheme

Links like bringo://product/123 open the app. To use your own scheme, replace bringo in:

  • android/app/src/main/AndroidManifest.xml (intent-filter <data android:scheme="โ€ฆ">)
  • ios/Runner/Info.plist (CFBundleURLSchemes)

7. Notification channel name

Optional: the Android notification channel label ("Your App Name alerts") is set in lib/core/push/push_service.dart โ€” rename it to your brand.

๐Ÿ‘‰
Next: API URL & Maps Key.