Web Push notifications,
made simple.
A lightweight alternative to OneSignal for Next.js / React projects. Sign up, drop the SDK in, and start sending — in minutes.
No credit card · MIT licensed · Self-host friendly
The notification you sent 2 minutes ago was just delivered.
Yesterday: 1,247 sends · 832 shown · 198 clicked.
@alice just started following you.
The features you need to send. Nothing else.
No segmentation. No journeys. No A/B tests. Just reliable Web Push.
Send in seconds
Compose in the dashboard or POST to a Bearer-auth endpoint. Synchronous response includes per-subscriber delivery counts.
REST API
One endpoint per project. Use it from any backend, CI, or curl. No SDK required on the server.
External user IDs
Tag subscriptions with your own user IDs and target sends by user from the dashboard or REST.
Signed webhooks
HMAC-SHA256 signatures, exponential-backoff retry, per-event filtering. Delivery log + replay UI included.
Built-in analytics
Shown / clicked beacons fire from the SDK service worker — no extra tools to wire up.
Open source
MIT licensed end-to-end. Read the code, fork it, audit the storage. Self-hosting guide included.
Web Push only. Nothing else.
We skip the marketing-suite features on purpose. In return you get readable code, ownership of your data, and no vendor lock-in.
| Feature | Nesh | OneSignal | Roll your own |
|---|---|---|---|
| Time to first notification | Minutes | Hours | Days |
| Per-project pricing transparency | Free tier in docs | Sales call | Your AWS bill |
| Web Push standard (VAPID) | Yes | Yes | Yes |
| Open source | MIT | No | Your repo |
| Hosted dashboard | Yes | Yes | DIY |
| Signed webhooks | Built-in | Built-in | DIY |
| Segmentation / Journeys / A/B | Out of scope | Yes | DIY |
A dashboard that fits on one screen
No nested menus to learn. Every project's status at a glance.

From signup to first send
Three steps, one code snippet.
Create a project
Sign up and create a project. We generate VAPID keys and an API key for you.
Drop in the SDK
Install @piro0919/next-push and pass apiBase + publicKey from the SDK setup screen.
Send
Compose in the dashboard, schedule it, or POST to the REST endpoint.
'use client';
import { usePush } from "@piro0919/next-push";
export function Subscribe() {
const { subscribe } = usePush({
apiBase: "https://nesh.kkweb.io/api/v1/projects/<projectId>",
vapidPublicKey: "<VAPID public key>",
userId: currentUser.id, // optional — target sends by user
});
return <button onClick={subscribe}>Enable notifications</button>;
}Free for the entire early access period
Nesh is a self-funded side project — no VC, no "surprise paywall" exit. Long-term pricing will be announced in advance once it's decided.
- 1 project per account
- 5,000 subscribers per project
- 10,000 sends per project per UTC month
- Unlimited webhooks (5s timeout, exponential retry)
- REST API + signed webhooks included
FAQ
Ship Web Push this afternoon
No setup call. No credit card. No five-page onboarding.