# PushX v0.15.0 - Table of Contents

> Push notifications for Elixir with one API for Apple APNS, Google FCM and
standards-based Web Push (VAPID) — automatic retries, circuit breaker,
dead-token cleanup, telemetry, FCM topics, a test adapter, and per-tenant
runtime credentials, with nothing to add to your supervision tree.

## Pages

- [README](readme.md)
- [AGENTS.md](agents.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)

## Modules

- [PushX.JWTCache](PushX.JWTCache.md): Cache for short-lived, expensively-derived values: APNS JWTs, per-origin
VAPID JWTs and resolved VAPID key pairs.
- [PushX.ReconnectGuard](PushX.ReconnectGuard.md): Coalesces HTTP pool reconnects so concurrent failures cause one restart.

- Core API
  - [PushX](PushX.md): Push notifications for Elixir: APNS, FCM and Web Push in one call.
  - [PushX.Message](PushX.Message.md): A struct representing a push notification message.
  - [PushX.Response](PushX.Response.md): A struct representing the response from a push notification request.

- Providers
  - [PushX.APNS](PushX.APNS.md): Apple Push Notification Service (APNS) client.
  - [PushX.FCM](PushX.FCM.md): Firebase Cloud Messaging (FCM) client.
  - [PushX.WebPush](PushX.WebPush.md): Standards-based Web Push: send to any browser's push service — Chrome,
Firefox, Edge, Safari 16+ (macOS Ventura / iOS 16.4 and later), Opera,
Samsung Internet — using the subscription the browser's `PushManager` gives
you. Payloads are encrypted end-to-end per RFC 8291 (`aes128gcm`) and the
request is authenticated with VAPID (RFC 8292); transport is RFC 8030.

- Runtime Instances
  - [PushX.Instance](PushX.Instance.md): Runtime management of named push notification instances.
  - [PushX.Instance.Loader](PushX.Instance.Loader.md): Starts named instances on boot from your own source of truth.

- Infrastructure
  - [PushX.Config](PushX.Config.md): Configuration management for PushX.
  - [PushX.Retry](PushX.Retry.md): Retry logic for push notification delivery following Apple and Google best practices.
  - [PushX.Token](PushX.Token.md): Token validation for push notification device tokens.

- Observability
  - [PushX.CircuitBreaker](PushX.CircuitBreaker.md): Circuit breaker for push notification providers.
  - [PushX.RateLimiter](PushX.RateLimiter.md): Client-side rate limiting for push notifications.
  - [PushX.Telemetry](PushX.Telemetry.md): Telemetry integration for PushX.

- Testing
  - [PushX.Test](PushX.Test.md): Test delivery mode: assert what your application pushed without touching
APNS or FCM.
  - [PushX.Test.Assertions](PushX.Test.Assertions.md): ExUnit assertions for `PushX.Test` (test delivery mode).
  - [PushX.Test.Push](PushX.Test.Push.md): One recorded push. Fields

## Mix Tasks

- [mix pushx.doctor](Mix.Tasks.Pushx.Doctor.md): Validates the PushX configuration offline — the same checks the library
runs at start/send time, reported all at once
- [mix pushx.vapid](Mix.Tasks.Pushx.Vapid.md): Generates a VAPID (RFC 8292) application-server key pair for Web Push and
prints it with the config and front-end snippets that use it

