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

Servis Katmanı Haritası

services/ klasöründeki tüm servisler ve sorumlulukları.

Çekirdek Servisler

ApiService.ts

Simüle edilmiş (mock) bir HTTP istemcisi. Production’da kullanılmaz. Sadece geliştirme/test amaçlı. Network delay, error rate simülasyonu içerir.

SecureApiClient.ts

EAS build’larda kullanılan token yönetimli HTTP istemcisi. Firebase Remote Config’den API URL alır. Token refresh desteği var. ApiClient singleton olarak export edilir.

ApiClient (utils/ApiClient.ts)

Gerçek production HTTP istemcisi. Singleton pattern, fetch tabanlı, retry/timeout/cache desteği var. x-consumer-key ve x-cid (customer ID) header’larını otomatik ekler. Expo Go’da api.okul.work, production’da api.okul.com.tr.

Domain Servisleri

ServisEndpoint PrefixSorumluluk
AuthService.ts/auth/*, /customer/me/firmsGiriş (email+şifre, OTP), çıkış, token yönetimi
LeadsService.ts/customer/leadsBaşvuru listesi, detay, durum güncelleme, notlar
GalleryService.tsMediaService üzerindenFotoğraf yükleme/silme/sıralama, kapak fotoğrafı
MediaService.ts/media, /schools/{id}/mediaHam medya CRUD operasyonları
CompaniesService.ts/customer/me/firms, /customerFirma ve okul verileri
SchoolContentService.ts/customer/school-contentsDuyuru/etkinlik/başarı içerikleri
StatsService.ts/customer/statsDashboard istatistikleri
NotesService.ts/customer/leads/{id}/notesLead notları

Altyapı Servisleri

ServisSorumluluk
AnalyticsService.tsFirebase Analytics wrapper
AnalyticsEvents.tsTip tanımlı event tracking fonksiyonları
CrashlyticsService.tsFirebase Crashlytics wrapper (lazy load)
CustomerIOService.tsCustomer.io kullanıcı tanımlama ve takip
OneSignalService.tsPush notification (OneSignal)
PushNotificationService.tsOneSignal üstünde soyutlama katmanı
NotificationService.tsBildirim yönetimi
NotificationApiService.tsBildirim API çağrıları
RemoteConfigService.tsFirebase Remote Config (lazy load, production-only)
DeepLinkService.tsDeep link parsing/handling
ConfigService.tsRuntime konfigürasyon

Önemli Mimari Kural

Firebase native modülleri (@react-native-firebase/*) Expo Go’da çalışmaz. Bu servisler ya lazy import ya da Config.IS_EXPO_GO kontrolü ile korunur.