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
| Servis | Endpoint Prefix | Sorumluluk |
|---|---|---|
| AuthService.ts | /auth/*, /customer/me/firms | Giriş (email+şifre, OTP), çıkış, token yönetimi |
| LeadsService.ts | /customer/leads | Başvuru listesi, detay, durum güncelleme, notlar |
| GalleryService.ts | MediaService üzerinden | Fotoğraf yükleme/silme/sıralama, kapak fotoğrafı |
| MediaService.ts | /media, /schools/{id}/media | Ham medya CRUD operasyonları |
| CompaniesService.ts | /customer/me/firms, /customer | Firma ve okul verileri |
| SchoolContentService.ts | /customer/school-contents | Duyuru/etkinlik/başarı içerikleri |
| StatsService.ts | /customer/stats | Dashboard istatistikleri |
| NotesService.ts | /customer/leads/{id}/notes | Lead notları |
Altyapı Servisleri
| Servis | Sorumluluk |
|---|---|
| AnalyticsService.ts | Firebase Analytics wrapper |
| AnalyticsEvents.ts | Tip tanımlı event tracking fonksiyonları |
| CrashlyticsService.ts | Firebase Crashlytics wrapper (lazy load) |
| CustomerIOService.ts | Customer.io kullanıcı tanımlama ve takip |
| OneSignalService.ts | Push notification (OneSignal) |
| PushNotificationService.ts | OneSignal üstünde soyutlama katmanı |
| NotificationService.ts | Bildirim yönetimi |
| NotificationApiService.ts | Bildirim API çağrıları |
| RemoteConfigService.ts | Firebase Remote Config (lazy load, production-only) |
| DeepLinkService.ts | Deep link parsing/handling |
| ConfigService.ts | Runtime 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.
Related
- sistem-genel-bakis — genel mimari
- data-flow — veri akışı
- api-client-pattern — HTTP istemci konvansiyonları