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

Navigation Yapısı

Expo Router 6 (file-based routing) kullanılır. app/ klasör yapısı doğrudan route tree’yi oluşturur.

Route Tree

/                           → app/_layout.tsx (Root Layout)
├── (tabs)/                 → app/(tabs)/_layout.tsx (Tab Navigator)
│   ├── index              → app/(tabs)/index.tsx (Ana Sayfa / Dashboard)
│   ├── leads              → app/(tabs)/leads.tsx (Başvurular)
│   ├── gallery            → app/(tabs)/gallery.tsx (Galeri)
│   ├── content            → app/(tabs)/content.tsx (İçerikler)
│   └── profile            → app/(tabs)/profile.tsx (Profil)
├── legal/
│   ├── privacy-policy     → Gizlilik Politikası
│   └── terms-of-service   → Kullanım Şartları
└── +not-found             → 404 ekranı

Tab Bar İkonları

TabİkonTürkçe Ad
indexhomeAna Sayfa
leadspeopleBaşvurular
galleryimagesGaleri
contentdocument-textİçerikler
profilepersonProfil

Ekran Dışı Auth Akışı

Auth işlemleri Stack Navigator içinde değil, _layout.tsx seviyesinde state ile yönetilir:

  • showOnboarding<OnboardingScreen />
  • !isAuthenticated<AuthFlow />
  • needsCompanySelection<CompanySelectionScreen />
  • hasNoCompanies<NoCompaniesScreen />
  • Update gerekiyorsa → <UpdateLoadingScreen />

Bu yaklaşım navigation stack’ini temiz tutar ve auth ekranları URL history’de görünmez.

Deep Linking

okulcomtr:// scheme. DeepLinkService.ts ile yönetilir. app.config.ts’de scheme: 'okulcomtr' olarak tanımlı.

Modal’lar Stack.Screen olarak değil, bileşen seviyesinde Modal bileşeni ile açılır (React Native Modal). Leads detayı, galeri yükleme, içerik oluşturma bu şekilde çalışır.