Vibecode OneSignal

track this build5 phases, 10 steps, beginner friendly
KINDA · weekend project
price $19/moyou'd save $228/yrbuild time weekendcategory 🛠️ dev toolsreplaced by 0 people

Web push is an open standard: a service worker, VAPID keys and a POST to the browser push service, which web-push libraries make a sitting. Mobile push means APNs and FCM credentials and a device token table, a weekend. Segments, A/B tests and the dashboard are the product.

the project pack5 files · written for this build, step by step
README.md
# OneSignal · indie build

Web push notifications you own: VAPID keys, a service worker, permission asked only after a click, a subscriptions table, a send function that prunes dead endpoints, an admin to compose and schedule, simple segments by tag, and mobile adapters only if you have a native app.

Estimated effort: **weekend**. Work `BUILD_PLAN.md` top to bottom · every phase ends in a check that has to pass before the next one starts.

## Stack

| Part | Choice | Why |
| --- | --- | --- |
| Runtime | Node 22, node:http and node:sqlite | subscriptions and sends |
| Protocol | The web-push library | the Web Push standard, no vendor |
| Hosting | HTTPS everywhere | push requires it |

## Before you start

Have every one of these ready. The plan assumes them from step one.

- [ ] **Node.js 22 or newer** · free
  - Why: Everything in this build runs on it: the server, the scripts, the tests.
  - Get it: Download the LTS installer from nodejs.org, or install with your package manager (brew install node, or nvm install 22). Restart the terminal afterwards.
  - Verify: node --version prints v22 or higher
- [ ] **A terminal and a code editor** · free
  - Why: Every step below is a command you type or a file you edit.
  - Get it: VS Code (code.visualstudio.com), Cursor or Zed. Open a folder for the project and use the editor's built-in terminal.
  - Verify: You can open a folder and run a command in its terminal
- [ ] **Git** · free
  - Why: History for your code, and the way most hosts deploy.
  - Get it: Install from git-scm.com or with your package manager, then run git init in the project folder once it exists.
  - Verify: git --version prints a version
- [ ] **A site served over HTTPS to add the service worker to** · free
  - Why: Push requires HTTPS and a service worker on the site's origin.
  - Get it: Your site, or a local HTTPS dev setup with mkcert.
- [ ] **VAPID keys generated once** · free
  - Why: Changing them invalidates every subscription.
  - Get it: npx web-push generate-vapid-keys, into .env.
- [ ] **A phone browser to test** · free
  - Why: Push on mobile behaves differently.
  - Get it: Android Chrome, or iOS Safari with the site installed to the home screen.
- [ ] **FCM and APNs credentials (optional)** (optional) · free with the developer accounts
  - Why: Only for a native app in Phase 5.
  - Get it: Firebase console service account; Apple Developer APNs key.
- [ ] **A small always-on server (VPS)** (optional) · about $5 a month
  - Why: This needs one process running all the time with a public address.
  - Get it: Hetzner Cloud (from about 4 EUR), DigitalOcean or Fly.io. Ubuntu 24.04, the smallest size. You need SSH access and a public IP. Only needed for the deploy phase; develop locally first.
- [ ] **A domain or subdomain** (optional) · roughly $10 a year, or free on an existing domain
  - Why: A public address you own, so links you share never break when a provider changes.
  - Get it: Register at Cloudflare Registrar, Porkbun or Namecheap, or use a subdomain of one you already own. You add one DNS record in the deploy phase.
- [ ] **Caddy on the server** (optional) · free
  - Why: Automatic HTTPS in front of the Node process. Without TLS the browser features this relies on (and your visitors' trust) do not work.
  - Get it: On the VPS: follow the install steps at caddyserver.com/docs/install for Ubuntu. One Caddyfile with your domain and a reverse_proxy line is the whole config.
  - Verify: caddy version prints a version on the server

## Quick start

```sh
mkdir push && cd push && git init && npm init -y && npm pkg set type=module && npm install web-push@3
mkdir -p data && cp .env.example .env
npx web-push generate-vapid-keys
```

Then copy `.env.example` to `.env` and fill in the values it documents.

## Honest limits

This build deliberately does not replace:

- Journeys, A/B tests, cross-channel analytics, email and SMS.
- segmentation, journeys and A/B testing
- delivery analytics across channels
- SDKs for every platform maintained for you
- email and SMS in the same tool

If one of those is essential to you, that is the reason to keep paying for OneSignal, and the README should say so rather than pretend.

$ choose a build depth, inspect the files, then open the complete pack in your agent

why people still pay

Marketing teams pay to target and measure without engineers; the free tier covers most side projects entirely.

what you lose

xsegmentation, journeys and A/B testing

xdelivery analytics across channels

xSDKs for every platform maintained for you

xemail and SMS in the same tool

prior art · use these instead of building, if you'd ratherweb-pushWeb Push protocol library for Nodentfysimple pub-sub push notifications, self-hostable
share on X ↗"I just replaced OneSignal ($19/mo) with one prompt"
the numbers

OneSignal pricing

growth$19/mo · monthly from, usage-based · $228/yr

free tierThe free plan covers unlimited mobile push for up to 1,000 monthly active users and 10,000 emails a month.

verified 2026-09-04 · source ↗

questions
Is OneSignal free?

The free plan covers unlimited mobile push for up to 1,000 monthly active users and 10,000 emails a month. Paid is Growth at $19/mo (checked 2026-09-04).

Vibecode OneSignal

Kinda. The core of OneSignal is buildable in a weekend with the prompt on this page, but there are real gaps: segmentation, journeys and A/B testing, delivery analytics across channels. Read the honest list above before committing.

How much does OneSignal cost?

OneSignal costs about $19/month (Growth, checked 2026-09-04), which is $228 per year.

What do I lose by replacing OneSignal?

Honestly: segmentation, journeys and A/B testing; delivery analytics across channels; SDKs for every platform maintained for you; email and SMS in the same tool. If any of those are load-bearing for you, keep paying.

Is there an open-source alternative to OneSignal?

Yes: web-push (Web Push protocol library for Node), ntfy (simple pub-sub push notifications, self-hostable). Using prior art is also vibecoding; the prompt is for when you want it exactly your way.