Signed webhook ingestion
Senders sign the payload with HMAC-SHA256 and the platform checks it in constant time.
Anyone can POST to a URL. The signature is what lets a team trust that an event came from its own tooling.
DevNotify is being built so a team can point its CI, version control and monitoring tools at one endpoint, say who should hear about what, and see afterwards what was delivered. It handles signature checks, queuing, routing and delivery records, so each application does not rebuild them.
An early-stage product, built in the open. The backend is implemented and runs locally. A hosted version is the goal and does not exist yet.
Alerting on a build, a deploy or a pull request looks small. The work behind it is not: verifying who sent the event, keeping senders from waiting on email, deciding who hears about what, and knowing afterwards what was delivered.
DevNotify is built on the hypothesis that this work can live in one reusable pipeline instead of being rewritten per application. That is a design goal, not a proven market claim.
An illustrative scenario assembled from capabilities in the README. It is not connected to a running service and shows no real data.
After a failed deployment, the pipeline posts a signed webhook to the team's ingest URL, labelled with an event type and a source.
POST /webhooks/acme/ingest
X-Event-Type: deploy_failed
X-Event-Source: jenkinsCreated once through the API. Event type and source decide the match. Channels decide where it goes.
{"name": "Notify on deploy failure",
"eventType": "deploy_failed",
"source": "jenkins",
"channels": ["EMAIL", "WEBSOCKET"]}It checks the signature, stores the event, queues it and answers the sender. A consumer then matches the rule and creates the notification.
The email goes out and the WebSocket message reaches connected members. Each delivery is recorded as SENT or FAILED, and the notification can be found later by text search.
Three example rules, evaluated in your browser. A rule with no event type or source matches anything. Matching here is exact and case-sensitive, so check the source for production behaviour. Nothing is sent anywhere.
Five stages, each a separate responsibility. The sender's request ends at the queue, and everything to the right of it runs asynchronously.
Each webhook is signed with the tenant's API key. The secret never crosses the network, and a bad signature never reaches the queue.
The event is saved to PostgreSQL first, then published to RabbitMQ, so a queued message always points at a real row.
The queue consumer and the gRPC interface call the same rule-matching code, so results do not depend on how an event arrived.
Five capabilities implemented in the backend and exercised through its local setup.
Senders sign the payload with HMAC-SHA256 and the platform checks it in constant time.
Anyone can POST to a URL. The signature is what lets a team trust that an event came from its own tooling.
Ingestion stores the event and hands it to RabbitMQ. Failed messages go to a dead letter queue instead of being lost.
A slow mail server cannot make a CI system's webhook time out.
Each team defines rules by event type, source and channel. Leaving type and source empty makes a catch-all.
What a team is notified about changes through the API, with no redeploy.
Email is sent asynchronously. WebSocket push reaches an individual member or a whole tenant topic.
Some alerts belong in an inbox and some in an open browser tab.
Every attempt is recorded as PENDING, SENT or FAILED, and notification history is indexed in Elasticsearch.
When something does not arrive, there is a record of what was tried and why it failed.
These are hypotheses about use cases. DevNotify has no customers or users to point to.
Spring Boot, PostgreSQL, RabbitMQ, Redis, Elasticsearch, gRPC.
The backend is a modular monolith with versioned SQL migrations, two deliberate caching strategies and a synchronous gRPC path beside the asynchronous one. The engineering page documents the API, versions, local setup and the known gaps.
DevNotify is an early-stage product. The backend is implemented and documented, and it runs on a developer machine with Docker. The goal is a hosted version that teams can use without running the infrastructure themselves. That version does not exist yet, and the current backend should not be deployed for real users until authorization on its management endpoints is addressed.
DevNotify is designed and built by Ashutosh Chaturvedi. The commit history and architecture notes are public, so progress can be checked rather than taken on trust. Portfolio and GitHub profile. Contact: contact@devnotify.tech.
Follow the build, or say what you would use it for.
There is no signup or waitlist. To say what you would use it for, ask a question or discuss the product, email the address above. Public feedback fits better as an issue on the repository.