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 | İkon | Türkçe Ad |
|---|---|---|
| index | home | Ana Sayfa |
| leads | people | Başvurular |
| gallery | images | Galeri |
| content | document-text | İçerikler |
| profile | person | Profil |
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 ve Bottom Sheet Pattern
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.
Related
- sistem-genel-bakis — genel mimari
- data-flow — veri akışı