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.

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.1.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.1-py3-none-any.whl (27.6 kB view details)

Uploaded Python 3

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

Hashes for notification_kit-1.0.1.tar.gz
Algorithm Hash digest
SHA256 9bc5da4b4cffa3efaa932508577627d578b419671db08d4cce213451a64e4b18
MD5 1545d7a8aea97f054276220491598ebd
BLAKE2b-256 4792afa4fd8ec5d4a4f9781fc05320b9cb026676568b0b66cb62e3ef99e31a62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for notification_kit-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 35f2660848872712c63e8e414128c4ac6af610a01b9ae92189dc31bd8f9b8ec3
MD5 1ddd49dee96e39088b68193a956103ca
BLAKE2b-256 f6705eee7c5dc97c27bfc21eded15866c402ab621f952e4a1c7a9234d916d966

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