Proje: Okul Platform · Hub: Okul Platform — Architecture

Temel Bilgiler

  • Repo: /Users/furkannamli/Desktop/project/api/okulcom-api
  • Framework: Laravel 11 (PHP 8.2+)
  • Auth: Laravel Sanctum (token tabanlı)
  • Queue: Laravel Horizon (Redis tabanlı)
  • Search: Laravel Scout + Typesense
  • Media: AWS S3 (league/flysystem-aws-s3-v3)
  • Push Notification: OneSignal (laravel-notification-channels/onesignal)
  • SMS: Infobip (infobip-api-php-client)
  • Permission: Spatie Laravel Permission
  • Image: Intervention Image
  • Revision / Audit: sofa/revisionable
  • Monitoring: Sentry (sentry/sentry-laravel)
  • API Docs: DarkaOnline L5 Swagger (darkaonline/l5-swagger)
  • Query Filtering: Spatie Laravel Query Builder
  • Telescope: Sadece local/staging ortamda aktif

Mimari Yapı

app/
├── Console/         — Artisan commands
├── DTO/             — Data Transfer Objects (request → service katmanı arası)
├── Enums/           — PHP 8.1+ enum'ları
├── Events/          — Domain events
├── Exceptions/      — Custom exceptions
├── Helpers/         — PhoneNumberHelper vs.
├── Http/
│   ├── Controllers/
│   │   ├── Admin/       — Admin panel endpoint'leri
│   │   ├── Customer/    — B2B müşteri portal endpoint'leri
│   │   ├── General/     — Herkese açık endpoint'ler
│   │   ├── User/        — Kullanıcı auth + profil
│   │   └── ExternalWebhooks/
│   ├── Middleware/
│   └── Requests/    — FormRequest validation sınıfları
├── Integrations/
│   ├── Call/        — Sonitel telefon sistemi
│   └── CustomerIO/  — B2B ve B2C Customer.io entegrasyonu
├── Jobs/            — Queue job'ları
├── Listeners/
├── Models/
├── Policies/
├── Providers/
├── Repositories/    — Interface + Concrete pattern
├── Rules/           — Custom validation rules
└── Services/        — İş mantığı servisleri

packages/
├── Okul/            — Platform'a özel internal package
└── Sonitel/         — SMS/Call provider client (HTTP)

Otomatik Yüklenen Dosyalar

  • constants.php — global sabit: OLD_USER_MODEL = 'App\User' (migration legacy)
  • helpers.php — global fonksiyonlar: isPhoneNumber, isPhoneGSM, getPhoneNaked, getPhoneNakedWithDigit_10/11