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
- 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.
- 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.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file notification_kit-1.0.1.tar.gz.
File metadata
- Download URL: notification_kit-1.0.1.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9bc5da4b4cffa3efaa932508577627d578b419671db08d4cce213451a64e4b18
|
|
| MD5 |
1545d7a8aea97f054276220491598ebd
|
|
| BLAKE2b-256 |
4792afa4fd8ec5d4a4f9781fc05320b9cb026676568b0b66cb62e3ef99e31a62
|
File details
Details for the file notification_kit-1.0.1-py3-none-any.whl.
File metadata
- Download URL: notification_kit-1.0.1-py3-none-any.whl
- Upload date:
- Size: 27.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35f2660848872712c63e8e414128c4ac6af610a01b9ae92189dc31bd8f9b8ec3
|
|
| MD5 |
1ddd49dee96e39088b68193a956103ca
|
|
| BLAKE2b-256 |
f6705eee7c5dc97c27bfc21eded15866c402ab621f952e4a1c7a9234d916d966
|