Proje: OkulUp · Hub: OkulUp — Architecture

Provider Hierarchy

app/_layout.tsx’teki tam sıra (dıştan içe):

wrapWithSentry(RootLayout)
  └── SafeAreaProvider
      └── ErrorBoundary
          └── QueryProvider          ← TanStack React Query
              └── GluestackUIProvider (config)
                  └── ThemeProvider  ← custom dark/light theme
                      └── DrawerProvider
                          └── AppContent
                              ├── OfflineBanner
                              ├── Stack (screenOptions: headerShown=false)
                              ├── NotificationBanner
                              └── ToastContainer
                          └── Drawer  ← global drawer (arkada bekliyor)

Notlar

  • GluestackUIProvider config import’u @gluestack-ui/config’ten alıyor (v1 config)
  • ThemeProvider custom: useColorScheme() hook’u ile sistem teması takip ediyor, Zustand’da persist ediliyor
  • DrawerProvider global: her sayfadan useDrawer() hook’u ile açılıp kapatılabiliyor
  • Drawer bileşeni her zaman mount edilmiş, translateX ile gizleniyor
  • Sentry.wrap root layout’u wrapper’ın en dışına sarıyor

AppContent İçi Hooks

useWebSocket()           // auth varsa WS bağlantısı kur
useNotificationPolling() // authenticated'sa badge count polling
useSentryNavigationIntegration() // sayfa geçişlerini Sentry'ye aktar
setupNotificationHandlers()     // push notification deep link handler