better-push
Start here

Demo matrix

Five running frameworks, three interchangeable Postgres drivers, one session and one queue.

The live demo puts every supported host on one origin. Sign in through any stack and the same better-auth cookie authenticates all five.

AppPathDeployed driver
Next.js App Router/nextDrizzle
TanStack Start/tanstackPrisma
Express 5/expressraw pg
Hono/honoDrizzle
NestJS/nestjsPrisma

Every app exposes device registration, send, in-app feed, preferences, Studio, browser diagnostics, and the emulator. The Next app remains the depth demo for digests, scheduled sends, queue inspection, FCM, and two-instance realtime.

Cross-stack walkthroughs

Sign in anywhere

Sign in as Alice on Express, then open NestJS. No second sign-in is needed: every app has its own better-auth handler, but they share the secret, tables, cookie name, origin, and cookie path.

Register here, send there

Register an emulator device on Hono. Open Next or NestJS and send. The device and delivery rows are shared database records, so the notification appears in the shared inbox.

One worker, five producers

Every app writes the same bp_job payload. One worker imports the shared notification definitions and drains jobs regardless of which framework enqueued them.

Kill a token everywhere

Disconnect a virtual device in the inbox, then send from another stack. The emulator returns invalid_token, the shared bp_device row is disabled, and every stack stops targeting it.

The matrix page calls each app's own push.diagnose() endpoint. The parity page runs a send/feed/preference/read sequence through all three adapters against the live database.

On this page