Skip to content

ksevelyar/smol-push

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SmolPush

SmolPush is a lightweight, async push delivery microservice built with Phoenix and PostgreSQL. It exposes a single POST /v1/pushes endpoint that enqueues push jobs and returns 202 Accepted immediately. Delivery is handled by Oban (OSS) with separate queues per vendor (APNS, FCM, Web Push), each limited to three concurrent workers.

Each vendor has an adjustable token-bucket rate limiter implemented with ETS for low overhead and minimal VM reductions. Pushes are dispatched over HTTP/2 using Finch, with three persistent connections per vendor to balance throughput and resource usage.

Testing Philosophy

Rate limiting is enforced through behavior-driven tests using a dedicated test adapter. The adapter counts outbound push attempts and reports them back to the test process. When a configured quota is exceeded, the test must fail by timeout: the adapter should never receive more pushes than the allowed limit within the defined window.

Telemetry

SmolPush emits Telemetry events focused on HTTP/2 connection state. Because the service uses persistent HTTP/2 connections exclusively, it exposes metrics for active connections per vendor (APNS, FCM, Web Push), allowing operators to verify that exactly three pools per vendor are established and healthy.

About

🚀 Minimal async push microservice (Phoenix + Postgres) with HTTP/2 delivery, per-vendor rate limiting, and zero external brokers

Resources

Stars

Watchers

Forks

Contributors