Skip to main content

Reusable, extensible Django notification framework

Project description

🚀 Django Notification Kit Django Notification Kit, Django projeleri için tasarlanmış; çok kanallı (Email / SMS / Push) bildirim gönderimini yöneten, modüler ve genişletilebilir bir altyapıdır. Sistemin temel amacı; bildirim gönderim süreçlerini API – Service – Backend – Task katmanlarına ayırarak yüksek test edilebilirlik ve sürdürülebilirlik sağlamaktır.

🎯 Kapsam (v1.0.0 – MVP) Bu versiyon, profesyonel bir bildirim sistemi için gerekli olan şu temel bileşenleri sunar:

✅ Abstract Model Yapısı: Genişletilmeye hazır taban modeller.

✅ Concrete Modeller: Notification, Template, Preference ve Log yapıları.

✅ SMTP Email Backend: Standart e-posta gönderim desteği.

✅ Base Notification Service: İş mantığını yöneten merkezi servis.

✅ Celery Task Factory: Ölçeklenebilir, asenkron gönderim desteği.

✅ DRF API: Standartlara uygun API uçları ve Serializer'lar.

✅ Merkezi Ayar Yönetimi: NOTIFICATION_KIT üzerinden tam kontrol.

✅ Full Testing: Unit, API ve Performans testleri.

🏛 Mimari Genel Bakış Sistem, sorumlulukların net ayrıştırıldığı Layered Architecture (Katmanlı Mimari) prensibiyle tasarlanmıştır.Katmanların SorumluluklarıKatmanSorumluluk AlanıAPIRequest validation, permission kontrolü, throttling.Serviceİş kuralları, kanal seçimi, retry logic yönetimi.BackendKanal spesifik (Email, SMS vb.) düşük seviyeli implementasyon.TaskAsenkron (Async) ve toplu (Batch) işlem yönetimi (Celery).ModelsVeri şeması; Notification, Template ve Kullanıcı tercihleri.SettingsMerkezi ve projeye özel override edilebilir konfigürasyon.

⚙️ Ayar Yönetimi Paket içi ayarlar notification_kit/settings.py dosyasında tanımlıdır. Proje bazlı özelleştirmeler için ana settings.py dosyanızda NOTIFICATION_KIT sözlüğünü kullanabilirsiniz.

Python

project/settings.py

NOTIFICATION_KIT = { "ASYNC": True, "MAX_RETRIES": 5, "EMAIL": { "FROM_EMAIL": "noreply@example.com", "RATE_LIMIT": 200, }, } Not: Hassas veriler (API Key, Şifre vb.) her zaman çevre değişkenleri (environment variables) üzerinden yönetilmelidir.

🛠 Teknik Implementasyon

  1. Backend Yapısı Her kanal (SMS, Email, Push) için bir backend sınıfı bulunur. Yeni bir sağlayıcı eklemek oldukça basittir:

Python class BaseBackend: def send(self, notification): raise NotImplementedError("Bu metod implemente edilmelidir.") 2. Service Katmanı İş mantığının kalbidir. API'den gelen isteği alır, hangi kanalın kullanılacağına karar verir ve gerekirse işi Celery'ye devreder.

Kanal Seçimi: Template üzerinden dinamik kanal yönetimi.

Soyutlama: Backend implementasyonundan bağımsız çalışma.

  1. API Katmanı Yalnızca bildirim oluşturma ve tetikleme sorumluluğunu taşır.

Validation: Serializer'lar ile veri doğruluğu garanti edilir.

Security: Permission sınıfları ile yetkisiz erişim engellenir.

🔒 Güvenlik Yaklaşımı Veri Gizliliği: Kişisel veriler (PII) kesinlikle loglanmaz.

Hız Sınırı: API düzeyinde Throttling ile brute-force ve aşırı yüklenme engellenir.

Denetim: Tüm gönderim denemeleri ve sonuçları NotificationLog üzerinden izlenebilir.

🧪 Test Stratejisi Sistem, Pytest altyapısı kullanılarak aşağıdaki seviyelerde test edilmektedir:

Model: Veri bütünlüğü ve ilişki testleri.

Service: İş mantığı ve kanal yönlendirme testleri.

Backend: Provider entegrasyon (mock) testleri.

API: Endpoint erişim ve veri formatı testleri.

🤝 Katkıda Bulunma Projeyi fork edin.

Yeni bir feature branch oluşturun (git checkout -b feature/yeniOzellik).

Değişikliklerinizi commit edin (git commit -m 'Ekle: Yeni SMS Backend').

Branch'inizi push edin (git push origin feature/yeniOzellik).

Bir Pull Request açın.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

notification_kit-1.0.0.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

notification_kit-1.0.0-py3-none-any.whl (27.8 kB view details)

Uploaded Python 3

File details

Details for the file notification_kit-1.0.0.tar.gz.

File metadata

  • Download URL: notification_kit-1.0.0.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for notification_kit-1.0.0.tar.gz
Algorithm Hash digest
SHA256 31b792a26bb1ac1c92eb1f249bfe10aea522038dc5aadd057ad3a77658097891
MD5 92bfead60ca006d1304d2ee4ea895c03
BLAKE2b-256 193750eadc43f63fece18bab462ffad444f2147899fbd43820fb6be738fafb13

See more details on using hashes here.

File details

Details for the file notification_kit-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for notification_kit-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1f5b8fb7b6c8a17bf493a2c5eb86af1672b524451b4c6228fd3b5cee81248e17
MD5 4210dcdf21c9db53caf228bcae497994
BLAKE2b-256 3b0c5f704379759e619b3e04ab7ebc33b9c498fc2cdda38803c3877541086b4a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page