App ID + launcher icon rename: halobestie.* → mybestie
- Customer: com.halobestie.client.client_app → com.mybestie - Mitra: com.halobestie.mitra.mitra_app → com.mybestie.mitra - iOS bundle IDs renamed to match (no .clientApp/.mitra camelCase legacy) Mechanical rename touches Android build.gradle/Manifest/MainActivity package, iOS pbxproj/Info.plist bundle IDs, Firebase configs (google-services.json + GoogleService-Info.plist + firebase_options.dart), new HaloBestie/Mitra launcher icons via flutter_launcher_icons (pubspec config + adaptive-icon resources + AppIcon imageset), and the appId references in every customer maestro flow + both .maestro/config.yaml files. brandLogoBg (#FF699F) added to halo_tokens for the launcher pink. Followup: re-register apps in Firebase consoles using the new package IDs; strategy memo at project-firebase-env-strategy. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
17
.gitignore
vendored
@@ -1,6 +1,8 @@
|
||||
node_modules/
|
||||
dist/
|
||||
.env
|
||||
.env.local
|
||||
.env.*.local
|
||||
*.log
|
||||
.dart_tool/
|
||||
.packages
|
||||
@@ -11,6 +13,21 @@ build/
|
||||
.flutter-plugins-dependencies
|
||||
bugreport-*.zip
|
||||
|
||||
# Claude per-project agent memory (local-only, machine-specific)
|
||||
.claude/agent-memory/
|
||||
|
||||
# Maestro local debug artifacts (screenshots dumped at app root by
|
||||
# `--debug-output` / takeScreenshot; results journal regenerated each run)
|
||||
mitra_app/*.png
|
||||
mitra_app/.maestro/RESULTS.md
|
||||
client_app/*.png
|
||||
client_app/.maestro/RESULTS.md
|
||||
|
||||
# Stray google-services.json at repo root (real ones live under
|
||||
# {client_app,mitra_app}/android/app/). Usually a `flutterfire configure`
|
||||
# misdrop — keep local but don't commit.
|
||||
/google-services.json
|
||||
|
||||
# Figma design dump (do not check in)
|
||||
requirement/Figma.zip
|
||||
requirement/Figma/
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
|
||||
env:
|
||||
# App identifiers — Android / iOS bundle IDs picked up automatically by `appId:` in flows.
|
||||
APP_ID_ANDROID: com.halobestie.client.client_app
|
||||
APP_ID_IOS: com.halobestie.client.clientApp
|
||||
APP_ID_ANDROID: com.mybestie
|
||||
APP_ID_IOS: com.mybestie
|
||||
|
||||
# Backend the app talks to — must match what the installed APK was built with
|
||||
# (the `--dart-define=API_BASE_URL=...` value at build time).
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
# Pre-req: client_app debug APK installed, backend reachable at
|
||||
# BACKEND_URL/BACKEND_INTERNAL_URL, NODE_ENV != 'production' (so the
|
||||
# /internal/_test/peek-otp + /internal/_test/reset-phone routes register).
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+628155556677"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# NOTE: numeric prefix conflicts with the existing
|
||||
# 02_cta_disabled_when_no_mitra.yaml — Stage 9 will reorganize the flow
|
||||
# directory once the full Phase 4 suite lands.
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+628155557701"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#
|
||||
# NOTE: numeric prefix conflicts with the existing 03_payment_to_chat_happy.yaml
|
||||
# — Stage 9 will reorganize the flow directory once the full Phase 4 suite lands.
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
---
|
||||
- launchApp:
|
||||
clearState: true
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#
|
||||
# Run:
|
||||
# maestro test client_app/.maestro/flows/04_payment_expired.yaml
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+628155557704"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
# mitra is force-timed-out server-side regardless of availability.
|
||||
# 2. anonymity_enabled=true on the dev backend.
|
||||
# 3. NODE_ENV != 'production' (so /internal/_test/* routes register).
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+628155557705"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#
|
||||
# Run:
|
||||
# maestro test client_app/.maestro/flows/08_returning_targeted.yaml
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+628155556677"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
#
|
||||
# Run:
|
||||
# maestro test client_app/.maestro/flows/09_chat_tab.yaml
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+628155556678"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
# simply suppresses the notification); the banner is the only
|
||||
# user-visible signal that they're missing alerts, which is what we
|
||||
# assert below.
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+6281234567890"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
# - Backend reachable; NODE_ENV != 'production'.
|
||||
# - ≥1 mitra online (mitraAvailable gates the "aku mau curhat" CTA).
|
||||
# - first_session_discount is enabled in the pricing config (default).
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+6281234567890"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
# 3. has_transacted is implicitly false (no chat_sessions →
|
||||
# isCustomerEligibleForFirstSessionDiscount returns true).
|
||||
# 4. /payment/entry routes to /payment/discount-paywall (S6).
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+6281234567890"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
# Pre-reqs:
|
||||
# - ≥1 mitra online (seed_history_session pairs with the most-recent
|
||||
# online mitra to write the chat_sessions row).
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+6281234567890"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
# This flow inlines the pre-OTP onboarding steps (instead of using the
|
||||
# onboarding_new_user_verified subflow) because we want to enter wrong OTPs
|
||||
# rather than the peeked valid one.
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+6281234567890"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
# stays AuthAnonymousData). USP screen pushes /payment/method-pick
|
||||
# directly when verified=false. Verifies onboardingIntent is NOT set
|
||||
# (it stays `recover` because we picked "curhat anonim", not "verifikasi").
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+6281234567890"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
#
|
||||
# Run:
|
||||
# maestro test client_app/.maestro/flows/ts-customer-02-10-recover_via_masuk_existing_user_to_home.yaml
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+6281234567890"
|
||||
EXISTING_NAME: "Returning User"
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#
|
||||
# Run:
|
||||
# maestro test client_app/.maestro/flows/ts-01_returning_lama_online.yaml
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+6281234567890"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
#
|
||||
# Run:
|
||||
# maestro test client_app/.maestro/flows/ts-02_returning_lama_offline_blast.yaml
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+6281234567890"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
#
|
||||
# Run:
|
||||
# maestro test client_app/.maestro/flows/ts-03_returning_lama_offline_tanya_admin.yaml
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+6281234567890"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
#
|
||||
# Run:
|
||||
# maestro test client_app/.maestro/flows/ts-04_returning_baru_blast.yaml
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+6281234567890"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#
|
||||
# Run:
|
||||
# maestro test client_app/.maestro/flows/ts-05_payment_expired_retry_preserves_targeting.yaml
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+6281234567890"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
#
|
||||
# Run:
|
||||
# maestro test client_app/.maestro/flows/ts-06_targeted_reject_fallback_to_blast.yaml
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+6281234567890"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
# - Backend reachable; NODE_ENV != 'production'.
|
||||
# - ≥1 mitra online (the seeded mitra acts as the blast acceptor and the
|
||||
# subsequent message sender).
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+6281234567890"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
# - The currently-signed-in mitra must have a `fcm_token` row in
|
||||
# `mitras.fcm_token`; otherwise the FCM dispatch succeeds at the
|
||||
# backend code path but never reaches a device.
|
||||
appId: com.halobestie.client.client_app
|
||||
appId: com.mybestie
|
||||
env:
|
||||
TEST_PHONE: "+6281234567890"
|
||||
BACKEND_INTERNAL_URL: http://localhost:3001
|
||||
|
||||
@@ -9,7 +9,7 @@ plugins {
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "com.halobestie.client.client_app"
|
||||
namespace = "com.mybestie"
|
||||
compileSdk = flutter.compileSdkVersion
|
||||
ndkVersion = flutter.ndkVersion
|
||||
|
||||
@@ -25,7 +25,7 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||
applicationId = "com.halobestie.client.client_app"
|
||||
applicationId = "com.mybestie"
|
||||
// You can update the following values to match your application needs.
|
||||
// For more information, see: https://flutter.dev/to/review-gradle-config.
|
||||
minSdk = 24
|
||||
|
||||
38
client_app/android/app/google-services.json
Normal file → Executable file
@@ -23,6 +23,44 @@
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:1068156046511:android:f30784f6b0423131b8185a",
|
||||
"android_client_info": {
|
||||
"package_name": "com.halobestie.mitra"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyDFWlLSWytqwI7LSdUbVrO7J5De9L2LV2U"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:1068156046511:android:4f8fe9a3c7c14c57b8185a",
|
||||
"android_client_info": {
|
||||
"package_name": "com.mybestie"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyDFWlLSWytqwI7LSdUbVrO7J5De9L2LV2U"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Phase 4 Stage 4 notif-gate via permission_handler. -->
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||
<application
|
||||
android:label="client_app"
|
||||
android:label="HaloBestie"
|
||||
android:name="${applicationName}"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:usesCleartextTraffic="true">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.halobestie.mitra.mitra_app
|
||||
package com.mybestie
|
||||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 13 KiB |
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
||||
|
Before Width: | Height: | Size: 544 B After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 442 B After Width: | Height: | Size: 1000 B |
|
Before Width: | Height: | Size: 721 B After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 5.0 KiB |
4
client_app/android/app/src/main/res/values/colors.xml
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="ic_launcher_background">#FF699F</color>
|
||||
</resources>
|
||||
BIN
client_app/assets/icons/logo.png
Executable file
|
After Width: | Height: | Size: 275 KiB |
@@ -496,7 +496,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.halobestie.client.clientApp;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.mybestie;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
@@ -513,7 +513,7 @@
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.halobestie.client.clientApp.RunnerTests;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.mybestie.RunnerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
@@ -531,7 +531,7 @@
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.halobestie.client.clientApp.RunnerTests;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.mybestie.RunnerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
|
||||
@@ -547,7 +547,7 @@
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.halobestie.client.clientApp.RunnerTests;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.mybestie.RunnerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
|
||||
@@ -558,7 +558,7 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
@@ -615,7 +615,7 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
@@ -679,7 +679,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.halobestie.client.clientApp;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.mybestie;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
@@ -702,7 +702,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.halobestie.client.clientApp;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.mybestie;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
|
||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 295 B After Width: | Height: | Size: 86 B |
|
Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 114 B |
|
Before Width: | Height: | Size: 450 B After Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 282 B After Width: | Height: | Size: 97 B |
|
Before Width: | Height: | Size: 462 B After Width: | Height: | Size: 144 B |
|
Before Width: | Height: | Size: 704 B After Width: | Height: | Size: 228 B |
|
Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 114 B |
|
Before Width: | Height: | Size: 586 B After Width: | Height: | Size: 276 B |
|
Before Width: | Height: | Size: 862 B After Width: | Height: | Size: 342 B |
|
After Width: | Height: | Size: 133 B |
|
After Width: | Height: | Size: 289 B |
|
After Width: | Height: | Size: 145 B |
|
After Width: | Height: | Size: 330 B |
|
Before Width: | Height: | Size: 862 B After Width: | Height: | Size: 342 B |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 493 B |
|
After Width: | Height: | Size: 166 B |
|
After Width: | Height: | Size: 412 B |
|
Before Width: | Height: | Size: 762 B After Width: | Height: | Size: 169 B |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 600 B |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 525 B |
4
client_app/ios/Runner/GoogleService-Info.plist
Normal file → Executable file
@@ -9,7 +9,7 @@
|
||||
<key>PLIST_VERSION</key>
|
||||
<string>1</string>
|
||||
<key>BUNDLE_ID</key>
|
||||
<string>com.halobestie.client.clientApp</string>
|
||||
<string>com.mybestie</string>
|
||||
<key>PROJECT_ID</key>
|
||||
<string>halobestie-clone-dev</string>
|
||||
<key>STORAGE_BUCKET</key>
|
||||
@@ -25,6 +25,6 @@
|
||||
<key>IS_SIGNIN_ENABLED</key>
|
||||
<true></true>
|
||||
<key>GOOGLE_APP_ID</key>
|
||||
<string>1:1068156046511:ios:c7786cedb9101d34b8185a</string>
|
||||
<string>1:1068156046511:ios:498ab71cbbbd6822b8185a</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -9,7 +9,7 @@
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Client App</string>
|
||||
<string>HaloBestie</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>client_app</string>
|
||||
<string>HaloBestie</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
|
||||
@@ -22,6 +22,9 @@ class HaloTokens {
|
||||
static const Color brandDark = Color(0xFF8C3255);
|
||||
static const Color brandSoft = Color(0xFFF7E4E9);
|
||||
static const Color brandSofter = Color(0xFFFBEFF3);
|
||||
// Launcher-icon background. Use this pink behind monochrome/white logos.
|
||||
// For full-color logos, use `surface` (#FFFFFF) as the icon background.
|
||||
static const Color brandLogoBg = Color(0xFFFF699F);
|
||||
static const Color accent = Color(0xFFF7B26A);
|
||||
static const Color accentSoft = Color(0xFFFCEAD3);
|
||||
static const Color mint = Color(0xFFB8DBC8);
|
||||
|
||||
@@ -63,6 +63,6 @@ class DefaultFirebaseOptions {
|
||||
messagingSenderId: '1068156046511',
|
||||
projectId: 'halobestie-clone-dev',
|
||||
storageBucket: 'halobestie-clone-dev.firebasestorage.app',
|
||||
iosBundleId: 'com.halobestie.client.clientApp',
|
||||
iosBundleId: 'com.mybestie',
|
||||
);
|
||||
}
|
||||
|
||||
@@ -33,6 +33,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.13.4"
|
||||
archive:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: archive
|
||||
sha256: a96e8b390886ee8abb49b7bd3ac8df6f451c621619f52a26e815fdcf568959ff
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.9"
|
||||
args:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -358,6 +366,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.20.5"
|
||||
flutter_launcher_icons:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: flutter_launcher_icons
|
||||
sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.13.1"
|
||||
flutter_lints:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
@@ -607,6 +623,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.1.2"
|
||||
image:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image
|
||||
sha256: f9881ff4998044947ec38d098bc7c8316ae1186fa786eddffdb867b9bc94dfce
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.8.0"
|
||||
io:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -879,6 +903,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.5.2"
|
||||
posix:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: posix
|
||||
sha256: "185ef7606574f789b40f289c233efa52e96dead518aed988e040a10737febb07"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.5.0"
|
||||
pub_semver:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
||||
@@ -58,12 +58,29 @@ dev_dependencies:
|
||||
build_runner: ^2.4.13
|
||||
custom_lint: ^0.7.0
|
||||
riverpod_lint: ^2.6.2
|
||||
# Generates launcher icons for Android + iOS from a single source PNG.
|
||||
# Config block below; run `dart run flutter_launcher_icons` to regenerate.
|
||||
flutter_launcher_icons: ^0.13.1
|
||||
# In-repo lint rules — lives at the repo root so client_app + mitra_app
|
||||
# share the same set. Adds `no_ref_in_dispose` and any future repo-wide
|
||||
# guardrails. See halo_lints/lib/halo_lints.dart.
|
||||
halo_lints:
|
||||
path: ../halo_lints
|
||||
|
||||
# Launcher-icon config. Background color mirrors HaloTokens.brandLogoBg
|
||||
# (#FF699F) from lib/core/theme/halo_tokens.dart — the documented bg for
|
||||
# monochrome/white logos. If the source logo ever becomes full-color,
|
||||
# switch both values to `#FFFFFF` (HaloTokens.surface).
|
||||
flutter_launcher_icons:
|
||||
android: true
|
||||
ios: true
|
||||
image_path: "assets/icons/logo.png"
|
||||
remove_alpha_ios: true
|
||||
background_color_ios: "#FF699F"
|
||||
min_sdk_android: 24
|
||||
adaptive_icon_background: "#FF699F"
|
||||
adaptive_icon_foreground: "assets/icons/logo.png"
|
||||
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
assets:
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
|
||||
env:
|
||||
# App identifiers
|
||||
APP_ID_ANDROID: com.halobestie.mitra.mitra_app
|
||||
APP_ID_IOS: com.halobestie.mitra
|
||||
APP_ID_ANDROID: com.mybestie.mitra
|
||||
APP_ID_IOS: com.mybestie.mitra
|
||||
|
||||
# Backend the app talks to — must match what the installed APK was built with.
|
||||
BACKEND_URL: http://192.168.88.247:3000
|
||||
|
||||
@@ -6,7 +6,7 @@ plugins {
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "com.halobestie.mitra.mitra_app"
|
||||
namespace = "com.mybestie.mitra"
|
||||
compileSdk = flutter.compileSdkVersion
|
||||
ndkVersion = flutter.ndkVersion
|
||||
|
||||
@@ -22,7 +22,7 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||
applicationId = "com.halobestie.mitra.mitra_app"
|
||||
applicationId = "com.mybestie.mitra"
|
||||
// You can update the following values to match your application needs.
|
||||
// For more information, see: https://flutter.dev/to/review-gradle-config.
|
||||
minSdk = 24
|
||||
|
||||
86
mitra_app/android/app/google-services.json
Executable file
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "1068156046511",
|
||||
"project_id": "halobestie-clone-dev",
|
||||
"storage_bucket": "halobestie-clone-dev.firebasestorage.app"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:1068156046511:android:ba6e699216de1c50b8185a",
|
||||
"android_client_info": {
|
||||
"package_name": "com.halobestie.client.client_app"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyDFWlLSWytqwI7LSdUbVrO7J5De9L2LV2U"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:1068156046511:android:f30784f6b0423131b8185a",
|
||||
"android_client_info": {
|
||||
"package_name": "com.halobestie.mitra"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyDFWlLSWytqwI7LSdUbVrO7J5De9L2LV2U"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:1068156046511:android:4f8fe9a3c7c14c57b8185a",
|
||||
"android_client_info": {
|
||||
"package_name": "com.mybestie"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyDFWlLSWytqwI7LSdUbVrO7J5De9L2LV2U"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:1068156046511:android:8a873c8b7e64410ab8185a",
|
||||
"android_client_info": {
|
||||
"package_name": "com.mybestie.mitra"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyDFWlLSWytqwI7LSdUbVrO7J5De9L2LV2U"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<application
|
||||
android:label="mitra_app"
|
||||
android:label="Mitra HaloBestie"
|
||||
android:name="${applicationName}"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:usesCleartextTraffic="true">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.halobestie.client.client_app
|
||||
package com.mybestie.mitra
|
||||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 19 KiB |
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
||||
|
Before Width: | Height: | Size: 544 B After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 442 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 721 B After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 7.5 KiB |
4
mitra_app/android/app/src/main/res/values/colors.xml
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="ic_launcher_background">#FFFFFF</color>
|
||||
</resources>
|
||||
BIN
mitra_app/assets/icons/logo.png
Executable file
|
After Width: | Height: | Size: 288 KiB |
@@ -369,7 +369,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.halobestie.mitra;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.mybestie.mitra;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
@@ -385,7 +385,7 @@
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.halobestie.mitra.mitraApp.RunnerTests;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.mybestie.mitra.RunnerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
@@ -402,7 +402,7 @@
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.halobestie.mitra.mitraApp.RunnerTests;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.mybestie.mitra.RunnerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
|
||||
@@ -417,7 +417,7 @@
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.halobestie.mitra.mitraApp.RunnerTests;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.mybestie.mitra.RunnerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
|
||||
@@ -428,7 +428,7 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
@@ -485,7 +485,7 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
@@ -549,7 +549,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.halobestie.mitra;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.mybestie.mitra;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
@@ -572,7 +572,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.halobestie.mitra;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.mybestie.mitra;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
|
||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 295 B After Width: | Height: | Size: 365 B |
|
Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 970 B |
|
Before Width: | Height: | Size: 450 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 282 B After Width: | Height: | Size: 623 B |
|
Before Width: | Height: | Size: 462 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 704 B After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 970 B |
|
Before Width: | Height: | Size: 586 B After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 862 B After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 2.6 KiB |