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

Ortak Bileşenler (Shared Components)

components/ klasöründeki bileşenler ve sorumlulukları.

Temel Bileşenler

BileşenKonumAçıklama
AppHeadercomponents/ui/Tüm ekranlarda gradient header, okul seçici, bildirim bell
LoadingScreencomponents/Uygulama yükleme ekranı
UpdateLoadingScreencomponents/OTA update progress ekranı
OnboardingScreencomponents/3-slayt onboarding
ErrorBoundarycomponents/React error boundary
DevInfoBannercomponents/Development build bilgi banner’ı

Auth Bileşenleri

BileşenAçıklama
AuthFlowLogin + OTP akışı coordinator
LoginScreenEmail+şifre / telefon seçimi
OTPVerificationScreenSMS kodu doğrulama
CompanySelectionScreenÇok firma → seçim ekranı
NoCompaniesScreenFirma yok → uyarı ekranı
TermsGuardŞartlar kabul gate
TermsAcceptanceModalZorunlu şartlar modal’ı

AppHeader Özellikleri

  • Her ekranda görünür (headerShown: false ile Stack devre dışı, AppHeader bileşen ile kullanılır)
  • Gradient: ['#C2C2C2', '#005779', '#C2C2C2'] (light) / dark mode karşılığı
  • İçerik: Kullanıcı adı, seçili okul adı (tıklanabilir), bildirim bell (unread badge)
  • Okul değiştirme: SchoolSelectionModal
  • Bildirim: NotificationModal

UI Bileşenleri

BileşenAçıklama
LeadDetailModalLead detay ve not/durum güncelleme
NotesManagerLead not CRUD UI
LeadsListSkeletonLead listesi yükleme iskelet
StatsCardSkeletonİstatistik kartı iskelet
FloatingLabelInputFloating label input (form)
OTPInput4-hane OTP giriş bileşeni
LottieSpinnerLottie animasyonlu yükleme
NetworkStatusBannerİnternet bağlantı durumu banner
Toast (react-native-toast-message)Global toast notifications

Font Scaling Babel Plugin

babel-plugin-disable-font-scaling.js — Tüm Text ve TextInput elemanlarına otomatik allowFontScaling={false} ekler. Kullanıcının sistem font boyutu UI’ı etkilemez.

Haptic Feedback

expo-haptics → önemli buton tıklamalarında (galeri sıralama, lead aksiyon vs.)