Analysis updated 2026-05-18
Send reliable mobile push notifications from any service by publishing events to a Redis Stream queue.
Prevent duplicate notifications with idempotency keys so users never receive the same message twice.
Run lifecycle marketing campaigns (onboarding, trial ending, win-back) through the same reliable pipeline as transactional alerts.
Add a new notification type with just a schema, template, and translations and no changes to worker code.
| suhaanthsuhi/notification-platform | 0xhassaan/nn-from-scratch | a-little-hoof/dsr | |
|---|---|---|---|
| Stars | 0 | 0 | 0 |
| Language | Python | Python | Python |
| Setup difficulty | moderate | moderate | hard |
| Complexity | 5/5 | 4/5 | 5/5 |
| Audience | developer | developer | researcher |
Figures from each repo's GitHub metadata at analysis time.
Requires Redis, PostgreSQL, and a Firebase service account JSON for actual push delivery, Docker Compose starts everything with one command.
Notifty is a Python backend system for sending push notifications to mobile devices in a way that is reliable, fast, and decoupled from the rest of your application. Instead of having each part of your app call a notification service directly, which creates tight coupling and causes problems when the provider is slow or down, this system uses a message queue built on Redis Streams. Services publish events like "user registered" or "subscription expired" to the queue, and the notification platform picks them up, processes them, and delivers push messages through Firebase Cloud Messaging to iOS and Android devices. The processing happens in three stages. First, an enricher reads the raw event, validates it, checks for duplicates to prevent sending the same notification twice, and loads the user's profile and preferences from a PostgreSQL database. Second, a decision engine checks whether the user has opted in, applies rate limits (per user per hour, per campaign, and a daily cap), and renders the notification text from a template that supports multiple languages. Third, a delivery worker looks up the user's device tokens and sends the notification to Firebase. The system handles failures carefully. If a worker crashes mid-process, a recovery loop reclaims the abandoned messages and retries. Events that repeatedly fail go to a dead-letter queue so they cannot block good messages. Every stream is memory-bounded by size and age. An engagement scheduler runs alongside the pipeline to send lifecycle marketing messages such as trial-ending reminders, onboarding nudges, and win-back campaigns. These use the same reliable delivery path as transactional notifications. Adding a new notification type requires only a Python enum value, a data schema, a template, and translations. A startup validator fails immediately if any of the four pieces is missing. Docker Compose brings everything up with one command. The project is described as extracted from a production system handling 10,000 events per second.
A Python distributed notification platform using Redis Streams and Firebase Cloud Messaging for reliable, idempotent, multi-language push delivery at scale.
Mainly Python. The stack also includes Python, Redis Streams, PostgreSQL.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.