Full setup guide · Verification scope

Mobile quick test — buyer candidate v05

Use a separate extracted copy with no real Firebase configuration. The included local helpers use only demo-simple-world and localhost. They refuse to overwrite a populated emulator installation or an existing Android configuration.

1. Start the backend

# Terminal 1: Source/admin-panel
cd admin-functions
npm ci
cd ..
firebase emulators:start --config firebase.emulators.json --project demo-simple-world --only auth,firestore,functions,storage

# Terminal 2: Source/admin-panel
node deployment/demo/seed-demo.cjs

Use Node 22 and JDK 21. Wait for every emulator and the seed to report success. The seed creates 40 fictional profiles and text-only sample content; no real customer accounts are included.

2. Run Android

# Source/mobile-app
node tools/configure-android-emulator.cjs
flutter pub get
flutter run --dart-define=SIMPLE_WORLD_EMULATORS=true --dart-define=SIMPLE_WORLD_DEMO=false

Sign in with member01@example.test and SampleMember-2026!. Member emails member02@example.test through member36@example.test use the same local password. These credentials require the seeded local emulators. Never reuse them in a public installation.

The Android emulator connects through 10.0.2.2. Debug builds allow HTTP for local emulators. The emulator build uses fictional Firebase options and refuses an external host or a project ID without the demo- prefix. External ads and push registration are skipped during local tests.

3. Understand the feature scope

ModeBehavior
Connected Firebase, defaultRegistration, sign-in, public discovery/search, profiles, posts, follows/timelines, private chats, activity, groups, reports and server controlled earned credits. Uses your Firebase project, or the local emulators when explicitly selected.
Optional on-device demoUse tools/prepare-offline-demo.py in a separate copy, then build with SIMPLE_WORLD_DEMO=true; see demo-instructions.html. Fictional text fixtures, local gallery photo import, draft restore, local post archive/search and demonstration notices remain on that app installation. No demo IDs or these interactions are sent to Firebase. Generated seed photos, videos and portraits are excluded.
Paid productsUnavailable in the running app. The original unverified integration is retained in examples/unverified-iap/ for developers. Paid purchases and restoration are excluded from the supported feature list.

Gallery images must be PNG or JPEG up to 15 MB and are copied to private local application storage. Deploy the included callable functions before accepting activity, group, reporting, moderation, account-deletion and earned-credit features. Profile search indexes derive from public names, including older records without indexes. The public projection omits malformed or oversized legacy fields and labels them in invalidPublicFields without altering the private record.

4. Repeat the backend checks

# Source/admin-panel, fresh seed
node deployment/demo/verify-demo.cjs
node deployment/demo/verify-fanout.cjs
node deployment/demo/verify-credits.cjs
node deployment/demo/verify-mobile-boundary.cjs
node deployment/demo/verify-boundary-regressions.cjs

The disposable checks include permission denial, legitimate owner operations, atomic chat payloads, custom UID collision protection, Unicode/oversized public names and unfollow notification cleanup. The REST chat concurrency check is a substitute for the mobile SDK transaction; review the native checks separately. Stop the emulators with Ctrl+C and start a fresh session to reseed. The helpers do not load operator credentials or support production endpoints.

5. Mac handoff for iOS

After adding your own native Firebase configuration, Xcode identifiers and required capabilities on a Mac, run:

# Source/mobile-app on macOS
sh tools/verify-ios.sh

This runs analysis, tests, CocoaPods and an unsigned release compile. Signing, iPhone acceptance, OAuth, APNs, media permissions and App Store review are separate. No iOS build was performed in the Windows review environment.

Existing installations

Use the coordinated backup, migration and security cutover in the full setup guide. Creating this source ZIP does not deploy to any Firebase project. The author's live demo content was refreshed separately; follow the deployment instructions for your own project. Do not apply strict rules to an old installation before its compatible client and data are ready.