Proje: OkulUp API · Hub: OkulUp API — Architecture
OkulUp API — Observer ve Event Sistemi
Observers (AppServiceProvider’da kayıtlı)
| Observer | Model | Ne Yapar |
|---|---|---|
AnnouncementObserver | Announcement | Cache temizle |
MessageObserver | Message | SendMessageNotificationJob + NewMessageEvent broadcast |
EventObserver | Event | Cache temizle |
AttendanceObserver | Attendance | attendances:school:{id}:page:{n} cache temizle |
PaymentObserver | Payment | Cache temizle + veli Notification oluştur + Push gönder |
PaymentObserver Özel
payment.created → öğrencinin ebeveynlerine hem DB notification hem push notification gönderir.
Bu pattern hem Notification::create() hem PushNotificationService::sendToUsers() kullanır — NotificationService::create() yerine.
Laravel Policies
app/Policies/ altında 13 policy var. Eloquent Policy sistemi kullanılır.
| Policy | Önemli Not |
|---|---|
AssignmentPolicy | manage() metodu — teacher sadece kendi ödevini manage edebilir |
UserPolicy | view() — öğretmen kendi sınıfındaki öğrenciyi görebilir |
| Diğerleri | Benzer role-based pattern |
AssignmentController::publish() → $this->authorize('manage', $assignment) kullanır.
Broadcast Events (Laravel Reverb)
| Event | Ne Zaman | Channel |
|---|---|---|
NewMessageEvent | Mesaj oluşturulunca | Conversation channel |
MessageReadEvent | Mesaj okunduğunda | - |
TypingEvent | Typing endpoint çağrıldığında | - |
NewNotificationEvent | Bildirim oluştuğunda | - |
UserOnlineEvent | Kullanıcı aktif | - |
Rate Limiters (AppServiceProvider)
| Alias | Limit |
|---|---|
login | 5/dk per IP |
register | 3/dk per IP |
api | 60/dk per user/IP |
upload | 10/dk per user/IP |
message | 30/dk per user/IP |
forgot-password | 3/dk per IP |
school-search | 20/dk per user/IP |
Slow Query Logging
Local + staging ortamda 100ms’den uzun sorgular Log::warning ile loglanır.
Model::shouldBeStrict()
AppServiceProvider::register() → Model::shouldBeStrict() aktif.
Lazy loading, fillable violations, accessing non-existent attributes → exception fırlatır.
Related
- mesajlasma-sistemi — NewMessageEvent detayı
- bildirim-sistemi — notification pattern
- sistem-genel-bakis — genel mimari