Rebranding
name, IDs, icon, scheme.
Every identifier lives in one Dart file plus the platform manifests. Do this before your first store upload: bundle IDs are hard to change once an app is live.
01One file first
lib/app/product_identity.dart is the single source of truth for the product's identifiers. Change these constants:
| Constant | Shipped value | What it is |
|---|---|---|
displayName | SOLSCOPE | Name in the app bar and store listing |
tagline, description | "Solana token terminal"… | One-line descriptors |
androidApplicationId, appleBundleId | com.solscope.app | Mirrors of the platform IDs (change the platform files too, below) |
website | https://solscope.mikodes.com | Your site; the status-bar Docs button opens <site>/docs/. Can also be set with --dart-define=SOLSCOPE_LIVE_HOST=…. |
supportEmail | support@solscope.mikodes.com | Your security and support contact (also in docs/SECURITY.md) |
deepLinkScheme, deepLinkHost | solscope, solscope.mikodes.com | Return leg of the Phantom / Solflare / Backpack handshake |
vaultStorageName, vaultKeychainAccount, prefsPrefix | solscope_vault… | Storage names. Change them before your first release so two products never share a vault; changing them later makes existing users' stored data unreadable. |
version | 0.1.0 | Shown in the app; keep it equal to pubspec.yaml |
02Bundle IDs
The package uses com.solscope.app. Pick your own reverse-domain ID, for example com.yourcompany.terminal.
| Platform | File | What to change |
|---|---|---|
| Android | android/app/build.gradle.kts | namespace and applicationId |
| Android | android/app/src/main/kotlin/com/solscope/app/MainActivity.kt | Move it to a folder matching your ID and change the package line |
| iOS | ios/Runner.xcodeproj/project.pbxproj | PRODUCT_BUNDLE_IDENTIFIER (app and .RunnerTests). Easiest in Xcode: ios/Runner.xcworkspace → Runner → Signing & Capabilities. |
| iOS | ios/Runner/Info.plist | The CFBundleURLName entry that repeats the bundle ID |
flutter clean
flutter pub get
03App name
| Where | File | Key |
|---|---|---|
| Inside the app | lib/app/product_identity.dart | displayName |
| Android launcher | android/app/src/main/AndroidManifest.xml | android:label |
| iOS home screen | ios/Runner/Info.plist | CFBundleDisplayName, CFBundleName |
| Web | web/index.html, web/manifest.json | <title>, apple-mobile-web-app-title, name, short_name |
After the change, search the project for SOLSCOPE and solscope to catch remaining texts. test/identity_test.dart checks identifiers; update its expected values to yours.
04Deep-link scheme
External wallets return to the app through the solscope:// scheme. If you change deepLinkScheme, change it in the same three places: product_identity.dart, the intent filter in AndroidManifest.xml and CFBundleURLSchemes in Info.plist. Keep the phantom, solflare and backpack query entries — they let the app find those wallets.
05Icons and colours
- App icon:
assets/brand/app_icon_1024.png(andapp_icon.svg,app_icon_512.png) is a placeholder. Regenerate the platform icon slots from your own artwork:android/app/src/main/res/mipmap-*,ios/Runner/Assets.xcassets/AppIcon.appiconset,web/icons/andweb/favicon.png. No icon generator is included inpubspec.yaml. - Colours: design tokens in
lib/theme/solscope_tokens.dart(ground, surfaces, text, accents) andlib/theme/terminal/terminal_tokens.dart. - Font: JetBrains Mono, bundled in
assets/fonts/and declared inpubspec.yaml.
06Rebrand checklist
product_identity.dartupdated: name, IDs, site, support email, scheme, storage names.- Android
applicationId,namespaceandMainActivity.ktpackage changed. - iOS bundle ID changed in Xcode and
Info.plist. - App name changed on Android, iOS and web.
- Icons replaced on every platform.
docs/SECURITY.mdcontact replaced with yours.flutter testpasses after you updatetest/identity_test.dart.