A webhook-driven billing backend with idempotent event processing, subscription state sync, notification jobs, a queue drain worker, and a typewriter-style admin UI.
npm startOpen http://localhost:3000.
npm testPOST /webhooks/billing
The endpoint expects a Stripe-style signature header:
stripe-signature: t=<unix timestamp>,v1=<hmac sha256>
The local secret defaults to:
whsec_local_typewriter
GET /healthGET /admin/statePOST /admin/test-eventsPOST /admin/drain-notifications
customer.subscription.createdcustomer.subscription.updatedcustomer.subscription.deletedinvoice.payment_succeededinvoice.payment_failedcheckout.session.completed