Skip to content

Repository files navigation

RelayForge

CI

RelayForge is a production-minded webhook delivery control plane. It gives operators one durable timeline for payload identity, HMAC signatures, receiver outcomes, retries, dead-letter handling, and manual replay.

RelayForge dashboard

What this project demonstrates

  • Idempotent event ingestion backed by a unique producer key
  • HMAC-SHA256 signing and SHA-256 payload fingerprints
  • Durable delivery attempts with bounded exponential backoff
  • Dead-letter queue with deliberate, audited replay
  • Endpoint health, masked secrets, CSV export, and an operator dashboard
  • Spring Boot integration tests covering the critical reliability contract

The bundled transport is deterministic (mock://success, mock://flaky, and mock://down) so the demo is safe and repeatable. Replacing it with a real HTTP adapter does not change the persistence or workflow model.

Run locally

Requirements: Java 21+ and Maven 3.6.3+.

mvn spring-boot:run

Open http://localhost:8002.

Test

mvn test

API surface

Method Path Purpose
GET /api/dashboard Operational totals and delivery health
GET /api/endpoints Receiver registry with masked secrets
GET /api/events Durable event ledger
POST /api/events Idempotent event ingestion and dispatch
GET /api/events/{id}/attempts Attempt-level evidence
POST /api/events/{id}/retry Audited manual replay
GET /api/audit Operator and system audit activity
GET /api/export/events.csv Stable CSV export

Architecture

See docs/architecture.md for component boundaries, data flow, and production hardening paths.

Demo scope

RelayForge is a portfolio-grade local MVP. The event model and operational workflow are real; outbound calls are simulated so reviewers can exercise retry and failure behavior without external infrastructure or secrets.

About

Reliable webhook delivery control plane with idempotency, HMAC signing, retries, dead-letter recovery, and audit logs.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages