Problem (Why)
Pushi delivers notifications through a small set of handlers (Web Push, APN, SMTP, webhooks), but users increasingly need to reach recipients on Slack, SMS, WhatsApp and managed email gateways. Each new channel duplicates a well-established adapter pattern (base handler, subscription model, REST controller, API client, state registration, tests). This umbrella tracks the addition of several new handlers so they land consistently and reuse shared infrastructure (notably the Twilio backend shared by SMS and WhatsApp).
Description (What)
Add new notification handlers to pushi, each following the existing per-adapter conventions and exposing the associated REST API surface (subscription management endpoints plus API client methods). Routing supports both subscription-stored destinations and per-event overrides, and credentials follow the existing App-model + environment-variable pattern. The individual adapters are tracked as sub-issues.
Implementation (How)
- Slack adapter — see sub-issue.
- SMS adapter with pluggable backends, Twilio first — see sub-issue.
- WhatsApp adapter via Twilio (reuses the SMS Twilio backend) — see sub-issue.
- Mailme adapter for email delivery via the Hive Mailme gateway — see sub-issue.
- Ensure each handler is registered in
State.load_handlers() and exported from the base, api, app/models, and app/controllers __init__.py files.
- Land the SMS/Twilio backend before WhatsApp so the shared client is available.
Problem (Why)
Pushi delivers notifications through a small set of handlers (Web Push, APN, SMTP, webhooks), but users increasingly need to reach recipients on Slack, SMS, WhatsApp and managed email gateways. Each new channel duplicates a well-established adapter pattern (base handler, subscription model, REST controller, API client, state registration, tests). This umbrella tracks the addition of several new handlers so they land consistently and reuse shared infrastructure (notably the Twilio backend shared by SMS and WhatsApp).
Description (What)
Add new notification handlers to pushi, each following the existing per-adapter conventions and exposing the associated REST API surface (subscription management endpoints plus API client methods). Routing supports both subscription-stored destinations and per-event overrides, and credentials follow the existing App-model + environment-variable pattern. The individual adapters are tracked as sub-issues.
Implementation (How)
State.load_handlers()and exported from thebase,api,app/models, andapp/controllers__init__.pyfiles.