Skip to content

feat: implement signed webhook event system with retry handling#1053

Open
lout33 wants to merge 1 commit into
rohitdash08:mainfrom
lout33:feat/webhook-event-system
Open

feat: implement signed webhook event system with retry handling#1053
lout33 wants to merge 1 commit into
rohitdash08:mainfrom
lout33:feat/webhook-event-system

Conversation

@lout33
Copy link
Copy Markdown

@lout33 lout33 commented May 16, 2026

Summary

  • Signed webhook delivery with HMAC-SHA256 for 6 event types
  • Automated retry (3 attempts, exponential backoff)
  • Webhook subscription CRUD API (/webhooks)
  • Delivery log endpoint (/webhooks/deliveries)
  • All tests passing (16 new tests)

Closes #77

- Add WebhookSubscription and WebhookDeliveryLog models
- Create webhook service with HMAC-SHA256 signing, threaded delivery, and exponential retry (3 attempts)
- Add webhook routes: POST/GET/PATCH/DELETE /webhooks, GET /webhooks/deliveries
- Emit webhooks from key application events: expense.created/updated/deleted, bill.created/paid, user.registered
- Add webhook_signing_secret config with env override
- Update PostgreSQL schema with webhook tables and indexes
- Add comprehensive tests (16 tests) covering: CRUD, event emission, retry/failure logging, HMAC signature verification

Closes rohitdash08#77
@lout33 lout33 requested a review from rohitdash08 as a code owner May 16, 2026 03:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Webhook Event System

1 participant