Webhook relay and debugging SaaS — receive, inspect, and forward webhooks
- Go 74.2%
- templ 25.2%
- Dockerfile 0.6%
- Endpoint lifecycle as eskit Decider (Create/Delete/Receive/Forward events) - Projection read model for endpoint list + request history - Replace custom auth with forge-auth RequireAPIKey middleware - Wire up eskit Profiler - Given/When/Then decider tests - Remove old store/relay/events packages |
||
|---|---|---|
| .forgejo/workflows | ||
| cmd/pingrelay | ||
| internal | ||
| .gitignore | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| README.md | ||
🏓 PingRelay
Webhook relay & debugger SaaS. Receive, inspect, and forward webhooks in real-time.
Features
- Webhook Capture — Unique endpoint URLs that capture any HTTP method
- Real-time Dashboard — Datastar-powered SSE streaming, no JavaScript frameworks
- Auto-forwarding — Optionally relay captured webhooks to your local dev server
- SQLite Persistence — All data persisted with WAL mode for performance
- API Key Auth — Secure API access with
X-API-KeyorBearertokens - Pure Go — Single binary, no CGo dependencies (modernc.org/sqlite)
Quick Start
go build -o pingrelay ./cmd/pingrelay/
./pingrelay
# 🏓 PingRelay running at http://localhost:8080
# Demo API key printed on startup
Environment Variables
| Variable | Default | Description |
|---|---|---|
PORT |
8080 |
HTTP server port |
DB_PATH |
pingrelay.db |
SQLite database path |
API
All API endpoints require authentication via X-API-Key header.
# Create endpoint
curl -X POST http://localhost:8080/api/endpoints \
-H "X-API-Key: pr_your_key" \
-H "Content-Type: application/json" \
-d '{"name":"stripe-test","forward_url":"http://localhost:3000/webhook"}'
# List endpoints
curl http://localhost:8080/api/endpoints -H "X-API-Key: pr_your_key"
# List captured requests
curl http://localhost:8080/api/endpoints/{id}/requests -H "X-API-Key: pr_your_key"
# Send a webhook (no auth needed)
curl -X POST http://localhost:8080/hook/YOUR_TOKEN \
-H "Content-Type: application/json" \
-d '{"event":"payment.completed"}'
Architecture
cmd/pingrelay/— Entry pointinternal/domain/— Core types (Endpoint, Request, User)internal/store/— Store interface + SQLite implementationinternal/handler/— HTTP handlers + Datastar SSE dashboardinternal/relay/— Async webhook forwardinginternal/events/— Pub/sub event bus for real-time streaming