Proje: Okul B2B App · Hub: Okul B2B App — Architecture
Context State Yönetimi Mimarisi
Bu projede Redux, Zustand veya MobX kullanılmaz. Tüm global state React Context API ile yönetilir.
Provider Ağacı
_layout.tsx (Root)
ThemeProvider ← Tema (light/dark/system)
MainApp (font + auth state)
CompanyProvider ← Firma seçimi ve verisi
TermsGuard ← Kullanım şartları gate
AuthenticatedApp
SchoolProvider ← Okul seçimi ve verisi
NotificationProvider ← Bildirim state
Stack Navigator ← Ekranlar
Neden Sadece Context?
B2B uygulama için global state ihtiyacı sınırlı:
- Firma ve okul seçimi →
CompanyContext+SchoolContext - Tema →
ThemeContext - Bildirimler →
NotificationContext
Karmaşık redux store gerektiren real-time sync veya çok sayıda kullanıcı akışı yok.
CompanyProvider Remount Pattern
Login her tamamlandığında CompanyProvider zorla remount edilir:
<CompanyProvider key={`auth-${authKey}`}>Bu, önceki firma verisini temizler. authKey her login’de artar.
isReady Pattern
CompanyProvider.isReady: firma yükleme tamamlandığında true. Ekranlar isReady olana kadar LoadingScreen gösterir.
Logout Event Pattern
Otomatik logout için event subscription:
AuthService.onLogout(() => setIsAuthenticated(false));Bu, 30 saniyelik periodic check’i beklemeden anında logout UI güncellemesi sağlar.
Related
- data-flow — veri akış şeması
- firma-okul-hiyerarsisi — firma/okul context domain’i
- navigation-yapisi — ekranların context ile ilişkisi