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

Hızlı Başvuru — Yeni Session Özeti

Yeni bir session’a başlarken ilk okunan not.

Proje Kimliği

  • App: Okul.com.tr Kurumsal (React Native / Expo)
  • API: https://api.okul.com.tr (Expo Go’da: api.okul.work)
  • Bundle: com.okulcomtr.b2b (iOS + Android)
  • runtimeVersion: 1.0.1 (OTA için kritik!)
  • Android: versionCode=2, versionName=1.0.1 — Play Store’da
  • iOS: CFBundleVersion=3, 1.0.1 — TestFlight’ta review bekleniyor

Kritik Kurallar (ASLA Çiğneme)

  1. OTA: --platform all YOK → ios ve android ayrı ayrı
  2. Firebase: Expo Go’da native import YOK → lazy/dynamic import
  3. Native deps: ^ YOK → exact version pin
  4. Build/commit/update: Her zaman KULLANICIDAN İZİN AL
  5. Analytics: Yeni özellikte event OLMALI
  6. Türkçe: Metinlerde ı/ş/ö/ü/ç/ğ/İ doğru kullanılmalı

Ana Servisler

// HTTP
import { apiClient } from '@/utils/ApiClient';          // Production HTTP client
// Auth
import { AuthService } from '@/services/AuthService';
// Domain
import LeadsService from '@/services/LeadsService';
import GalleryService from '@/services/GalleryService';
import SchoolContentService from '@/services/SchoolContentService';
// Context
import { useCompany } from '@/contexts/CompanyContext';
import { useSchool } from '@/contexts/SchoolContext';

Versiyon Kontrolü (Build Öncesi)

grep -A1 "versionCode" android/app/build.gradle
grep -A1 "CFBundleVersion" ios/Okulcomtr/Info.plist

Ekranlar

TabDosyaServisler
Anasayfaapp/(tabs)/index.tsxLeadsService, StatsService
Bilgi Talepleriapp/(tabs)/leads.tsxLeadsService, NotesService, ConfigService
Galeriapp/(tabs)/gallery.tsxGalleryService, MediaService
İçeriklerapp/(tabs)/content.tsxSchoolContentService
Profilapp/(tabs)/profile.tsxAuthService

Açılış Akışı

SplashScreen → Fonts → Auth check → (Onboarding / Login / App) → OTA check → Theme → CompanyProvider → TermsGuard → SchoolProvider → Ekranlar

Vault Nerede?

~/Desktop/vault/Projects/Okul B2B App/