Thank you for your interest in contributing to hookflare! This guide will help you get started.
git clone https://github.com/hookedge/hookflare.git
cd hookflare
pnpm install
pnpm --filter @hookflare/shared build
pnpm --filter @hookflare/worker test # verify everything works- Create a branch from
main - Make your changes
- Run
pnpm --filter @hookflare/worker typecheckandpnpm --filter @hookflare/worker test - Submit a pull request
Check open issues for tasks. Issues labeled good first issue are ideal for new contributors.
The highest-impact contribution right now is adding webhook providers. A provider is a single file that teaches hookflare how to verify and understand webhooks from a specific service.
Quickest path (~10 minutes, no npm account needed):
-
Create a repo from the provider template:
gh repo create yourname/hookflare-provider-my-service \ --template hookedge/hookflare-provider-template cd hookflare-provider-my-service npm install -
Edit
src/index.ts— fill inid,verification, andevents(minimum). -
Run the tests — they'll fail until you change from the template defaults:
npm test -
Push to GitHub. Users can install directly:
hookflare connect my-service \ --provider github:yourname/hookflare-provider-my-service \ --secret xxx --to https://...
-
Optionally, publish to npm as
hookflare-provider-<name>and submit a PR to add it to the community providers list in the README.
See packages/providers/DESIGN.md for the full specification, including support for encrypted payloads (decode), challenge-response (challenge), and multi-secret providers (secrets).
| Tier | Package naming | Maintained by |
|---|---|---|
| Built-in | Ships with hookflare/providers |
hookflare team |
| Official | @hookflare/provider-<name> |
hookedge org |
| Community | hookflare-provider-<name> |
Anyone |
Community providers can be promoted to official when they are stable, tested, and actively maintained.
- Report bugs by opening an issue
- Improve documentation
- Add test coverage (especially for the delivery Durable Object and circuit breaker)
- Review pull requests
packages/
worker/ → Cloudflare Worker (webhook engine)
shared/ → Shared TypeScript types
cli/ → CLI tool
providers/ → Provider definitions
- TypeScript with strict mode
- No unnecessary abstractions — keep it direct and readable
- Use Drizzle ORM for all database operations
- Prefix IDs:
src_,dst_,sub_,evt_,dlv_,key_
Use clear, descriptive commit messages:
feat: add GitHub provider with push event catalogfix: handle Stripe signature with multiple v1 valuestest: add circuit breaker state transition testsdocs: update README retry policy section
By contributing to hookflare core, you agree that your contributions will be licensed under the Apache 2.0 license. Provider contributions using the template are licensed under MIT by default — you may choose your own license for your provider.