Skip to content

[Feature]: Grantfox webhook processor and automatic disbursement flow #142

Description

@memplethee-lab

Feature Request

Problem Statement

Grant approvals and disbursements from Grantfox are currently handled manually or via brittle scripts. There is no reliable webhook processor to consume Grantfox events (approval, payout scheduled, payout completed) and automatically create internal credit records or start payment flows.

Proposed Solution

Create a Grantfox Webhook Processor module that:

  • Verifies and authenticates incoming Grantfox webhook signatures.
  • Normalizes events (grant_approved, payout_scheduled, payout_completed, grant_revoked) into internal event types.
  • Triggers downstream actions: create credit in ledger, enqueue Stellar payment job, and notify project maintainers.
  • Provides retry/backoff, dead-letter handling, and an admin UI endpoint to view failed events.

Acceptance criteria:

  • Webhook endpoint implemented with signature verification and documented signature scheme.
  • Events normalized into a stable internal envelope and persisted for idempotent processing.
  • Successful integration test that simulates Grantfox webhook events and results in ledger credits and queued Stellar payments.
  • Failed events are retried with exponential backoff and moved to a dead-letter queue after max attempts.

Alternatives Considered

  • Polling Grantfox APIs for state (rejected: higher latency and rate limits).
  • Using third-party webhook relay (rejected: external dependency and potential vendor lock-in).

Additional Context

This module directly ties Grantfox approvals to Stellar disbursements and will be attractive to Grantfox and Stellar teams since it automates core flows.

Implementation Ideas (Optional)

  • Implement an internal EventStore table and use a worker pool (e.g., BullMQ) to process events.
  • Provide a small admin endpoint for manual replay of failed events.

Would you be willing to contribute?

  • Yes, I'd like to submit a PR for this feature
  • I can help with testing
  • I can help with documentation
  • I'd rather let someone else work on this

Activity

  1. removed their assignment
    on Aug 21, 2026
  2. Peculiarr7 commented on Aug 21, 2026

    @Peculiarr7

    Hi! I’m a full-stack developer with a strong blockchain background, and I’m confident I can resolve this issue quickly and effectively. I’ll deliver a clean, reliable solution with immediate attention to detail, ensuring it’s completed as soon as possible. Please assign it to me—I’m ready to get started right away.

  3. Divineifed1 commented on Aug 23, 2026

    @Divineifed1
    Contributor

    can I work on this task

  4. grantfox-oss commented on Aug 23, 2026

    @grantfox-oss

    🦊 GrantFox — @Divineifed1 has been assigned to this issue as part of the Third Campaign campaign!

    Next steps:

    1. Open a Pull Request referencing this issue (e.g., Closes #142)
    2. Your PR will be reviewed by the SourceXXL maintainers

    Good luck! Track your progress on GrantFox.

  5. added a commit that references this issue on Oct 10, 2026
    4656ac9
  6. grantfox-oss commented on Oct 10, 2026

    @grantfox-oss

    🎉 This issue has been marked as completed on GrantFox!

    @rupesh-kumar-sah's PR #155 was approved and merged by @memplethee-lab.

    🏆 @rupesh-kumar-sah: You earned 35 FoxPoints for this contribution! Your current tier: Explorer (490 total points). Track your full progress on GrantFox.

    👏 Great work, @rupesh-kumar-sah! Keep contributing to SourceXXL.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardThird CampaignCampaign: Third CampaignenhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions