Repository navigation
v0.1.0
v0.1.0 — Initial Release
Local Web Push notification testing service — like Mailpit, but for VAPID web push.
What is local-push?
A drop-in local replacement for browser push services (FCM, Mozilla, etc.) that lets you send, receive, and inspect web push notifications without a browser or third-party service. Zero changes to your backend code.
Features
- Push endpoint — receives encrypted payloads from the
web-pushnpm library and decrypts them automatically (AES-128-GCM / aesgcm) - Dashboard — built-in web UI with real-time updates (SSE), JSON syntax highlighting, dark/light mode
- REST API — full CRUD for subscriptions and messages, SSE event stream, health check
- Client SDK —
@nkemtasoft/local-push/clientwithwaitForMessage()for integration tests - Docker ready — single image, single port, no external dependencies
- Self-signed TLS — generated on startup (web-push requires HTTPS)
Quick Start
# Docker
docker run -p 4078:4078 ghcr.io/nkemtasoft/local-push
# npx
npx @nkemtasoft/local-push
# SDK
yarn add -D @nkemtasoft/local-pushExample
import { LocalWebPushClient } from "@nkemtasoft/local-push/client";
const client = new LocalWebPushClient({ url: "https://localhost:4078" });
const { subscription } = await client.createSubscription();
// Use subscription in your DB, send a push from your backend, then:
const msg = await client.waitForMessage({ timeout: 5000 });
console.log(msg.payload);See the README for full documentation.