explaingit

suhaanthsuhi/notification-platform

Analysis updated 2026-05-18

0PythonAudience · developerComplexity · 5/5Setup · moderate

TLDR

A Python distributed notification platform using Redis Streams and Firebase Cloud Messaging for reliable, idempotent, multi-language push delivery at scale.

Mindmap

mindmap
  root((Notifty))
    Pipeline Stages
      Context Enricher
      Decision Engine
      Delivery Worker
    Reliability
      At-least-once Delivery
      Idempotency Keys
      Crash Recovery
      Dead-letter Queue
    Engagement
      Campaign Scheduler
      Lifecycle Events
      User Segmentation
    Tech
      Python 3.13
      Redis Streams
      PostgreSQL
      Firebase FCM
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Send reliable mobile push notifications from any service by publishing events to a Redis Stream queue.

USE CASE 2

Prevent duplicate notifications with idempotency keys so users never receive the same message twice.

USE CASE 3

Run lifecycle marketing campaigns (onboarding, trial ending, win-back) through the same reliable pipeline as transactional alerts.

USE CASE 4

Add a new notification type with just a schema, template, and translations and no changes to worker code.

What is it built with?

PythonRedis StreamsPostgreSQLFirebase Cloud MessagingDocker

How does it compare?

suhaanthsuhi/notification-platform0xhassaan/nn-from-scratcha-little-hoof/dsr
Stars000
LanguagePythonPythonPython
Setup difficultymoderatemoderatehard
Complexity5/54/55/5
Audiencedeveloperdeveloperresearcher

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires Redis, PostgreSQL, and a Firebase service account JSON for actual push delivery, Docker Compose starts everything with one command.

In plain English

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.

Copy-paste prompts

Prompt 1
I want to build an event-driven notification pipeline in Python with Redis Streams. Show me how to use XREADGROUP and XACK so messages are only acknowledged after successful processing.
Prompt 2
How do I implement idempotency for a notification system using Redis SETNX? Show me how to check if an event has already been processed before acting on it.
Prompt 3
I'm sending push notifications with Firebase Cloud Messaging from Python. Show me how to send a batch notification, detect invalid device tokens in the response, and deactivate them in a database.
Prompt 4
Explain what a dead-letter queue is in an event-driven pipeline and show me how to route failed Redis Stream messages to a separate DLQ stream with their error details.
Prompt 5
I want to add per-user hourly rate limiting to a notification system using Redis atomic counters. Show me how to implement a limit that auto-resets each hour.

Frequently asked questions

What is notification-platform?

A Python distributed notification platform using Redis Streams and Firebase Cloud Messaging for reliable, idempotent, multi-language push delivery at scale.

What language is notification-platform written in?

Mainly Python. The stack also includes Python, Redis Streams, PostgreSQL.

How hard is notification-platform to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is notification-platform for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Scan in gitsafehub Deploy in gitdeployhub suhaanthsuhi on gitmyhub

Verify against the repo before relying on details.