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:
- Yeni Başvurular Elinizin Altında — Lead yönetimi
- Talepleri kaçırma, kayıt altına al — Not/takip
- 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:
login→LoginScreen(email+şifre VEYA telefon)otp-verification→OTPVerificationScreen(SMS kodu)
AuthFlow Validasyon
- Email: regex
/^[^\s@]+@[^\s@]+\.[^\s@]+$/ - Şifre: min 6 karakter
- Telefon:
+90ile başlamalı, 10 haneli mobil numara
Related
- auth-akisi — login/OTP detayları
- analytics-event-sistemi — onboarding event tracking