Generated output — this is a static snapshot rendered from .vibekb/. The .vibekb/ content is the source of truth. See Reference for provenance.

App core

Startup routing

Chooses WelcomeVideo, onboarding resume, PrePaywall, or MainScaffold from auth, onboarding completion, and paid status.

Implemented Verified from source User-facing

In one sentence

_checkOnboardingProgress() picks the first real screen after splash loading.

Current behavior

While _isLoading is true, a spinner scaffold shows. Then routing considers local onboarding_completed, Firebase user restoration, Firestore onboardingCompleted, and SubscriptionService.isPaidSubscriber. Paid users with incomplete onboarding are forced into MainScaffold and marked complete. Unpaid completed users land on PrePaywallScreen. Incomplete unpaid users resume via OnboardingProgressService.

Failure cases

  • Auth restoration timing (waits up to ~3s) can still race on slow devices.
  • Debug/TestFlight bypasses can skip paywall paths.

Current state

Implemented; verified-from-source.