Proje: Okul B2B App · Hub: Okul B2B App — Domain

Onboarding ve İlk Açılış Akışı

Uygulama Açılış Sırası

App başlar
  → SplashScreen.preventAutoHideAsync() (native splash ekranda)
  → fonts yüklenir
  → AsyncStorage 'hasLaunched' kontrol edilir
  → AuthService.isAuthenticatedAsync() çağrılır
  → OTA güncelleme kontrolü (useForceUpdate)
  → onLayout event'i → SplashScreen.hideAsync()
  ↓
  hasLaunched = null → OnboardingScreen (3 slayt)
  hasLaunched = 'true' + isAuthenticated = false → AuthFlow (Login)
  hasLaunched = 'true' + isAuthenticated = true → App (Tabs)

Onboarding Slaytları

3 slayt, react-native-pager-view ile swipe:

  1. Yeni Başvurular Elinizin Altında — Lead yönetimi
  2. Talepleri kaçırma, kayıt altına al — Not/takip
  3. Galeri Senin Vitrinin — Fotoğraf yönetimi

Görseller: assets/images/splash/splash-{1,2,3}.png

Her slayt görüntülemesinde trackOnboardingEvent('slide_view', { slide_index }) tetiklenir.

Native Splash Screen Stratejisi

onLayout event ile splash kaldırılır (not: useEffect ile kaldırınca 20-50ms beyaz flash görünüyordu):

const onLayoutRootView = useCallback(async () => {
  if (appIsReady) {
    await SplashScreen.hideAsync();
  }
}, [appIsReady]);

Auth Flow Adımları

AuthFlow bileşeni currentStep state’i ile:

  1. loginLoginScreen (email+şifre VEYA telefon)
  2. otp-verificationOTPVerificationScreen (SMS kodu)

AuthFlow Validasyon

  • Email: regex /^[^\s@]+@[^\s@]+\.[^\s@]+$/
  • Şifre: min 6 karakter
  • Telefon: +90 ile başlamalı, 10 haneli mobil numara