Inspiration

I volunteer with Touch Community Services in Singapore and I've seen firsthand how donors want more transparency. When someone gives $100, they want to know what their specific contribution funded, not just see an annual report months later saying "we helped 5,000 people."

Even regulated charities in Singapore only provide aggregate reporting. Small causes like student fundraisers, personal medical needs, or migrant worker aid have zero verification options because they can't afford the audits or meet the threshold for IPC (charity) status.

I wanted to see if blockchain could solve this transparency problem without adding complexity. Not as a buzzword, but as an actual practical solution that makes donor money more traceable.

What it does

CharityChain provides transaction-level transparency for charitable donations using the XRP Ledger:

  • Browse campaigns with upfront overhead disclosure (95% direct vs 5% admin, for example)
  • See milestone breakdowns showing exactly how funds will be used
  • Donate via XRPL - system auto-generates test wallet, funds it, executes payment
  • Track verification - organizations upload receipts and proof for each milestone
  • View on blockchain - every transaction links to XRPL Explorer for independent verification

The platform shows donors where their specific contribution went, not just aggregate statistics. If you donate 50 XRP, you can see which milestone that funded and view the verification proof once it's completed.

How we built it

Frontend:

  • React for component architecture
  • Plain CSS (no frameworks) to keep it lightweight
  • Designed around XRPL's visual language - dark theme with cyan/blue gradients

Blockchain Integration:

  • xrpl.js library for all blockchain interactions
  • Connected to XRPL Testnet: wss://s.altnet.rippletest.net:51233
  • Implemented Payment transactions, account queries, and transaction verification
  • Each donation auto-generates a new wallet, funds it via testnet faucet, then sends payment

Data Structure:

  • Created mock data for 4 fundraisers with different statuses (active, completed)
  • Milestone tracking with verification states and proof uploads
  • Receipt hashes and verifier information stored per milestone

Key Decision: Kept everything on native XRPL (no EVM sidechain) to demonstrate understanding of core XRPL features. Used Payment transactions exclusively - no smart contracts needed.

Challenges we ran into

Verification Trust Problem: My initial pitch was "trustless verification via blockchain." But that's fundamentally wrong. Someone still has to verify that a workshop actually happened. Blockchain just makes the record immutable, not the verification automatically trustworthy.

I pivoted to context-appropriate verifiers (hospitals for medical needs, schools for education, social workers for youth programs) with reputation tracking on-chain.

Escrow Model Failure: Spent hours implementing escrow logic to lock funds until milestones verified. Then I realized it doesn't work for charity - organizations need money BEFORE milestone completion to actually deliver the service (pay for the workshop, buy the equipment).

Solution: Use blockchain as transparency layer, not payment control. Money flows normally, organizations upload receipts, verification happens, record becomes permanent.

UX vs Technical Accuracy: Early versions showed raw XRPL addresses and transaction hashes everywhere. Technically accurate but completely overwhelming for users who just want to donate.

I implemented progressive disclosure - show essential info on campaign pages, detailed blockchain data in the donation confirmation, with links to XRPL Explorer for those who want to verify independently.

Styling Authenticity: First designs looked very generic "crypto gradient box" aesthetic. Needed to differentiate and look more professional.

I studied XRPL's actual design system and created a custom floating pattern component with subtle shooting star animations. The goal was visual interest without being gimmicky.

Accomplishments that we're proud of

Actually Using XRPL Properly: I didn't just slap "blockchain" on a website. The Payment transactions, account queries, and testnet integration are genuinely solving the transparency problem. Every donation is verifiable on the actual XRPL blockchain.

Solving a Real Problem: This isn't a solution looking for a problem. The transparency gap exists even for regulated charities. Small causes genuinely struggle with verification. The platform addresses both.

Clean Implementation: No backend required. No database. Just React + XRPL.js with direct blockchain connection. The entire donation flow (wallet creation → funding → payment → verification) works smoothly.

Honest About Limitations: I could have faked features or oversold the concept. Instead, I was honest about what's an MVP, what's mocked, and what blockchain actually solves vs. what it doesn't.

What we learned

Technical:

  • XRPL's Payment transactions are surprisingly straightforward compared to smart contract platforms
  • The 3-4 second settlement time makes real-time donation tracking actually viable
  • Managing React state across multi-step async flows (especially with blockchain calls)
  • How to handle errors gracefully when transactions fail

Blockchain Reality:

  • Blockchain isn't magic, it doesn't automatically create trust, just immutability
  • The "oracle problem" is real, someone has to verify off-chain events
  • Use native features when possible (Payment transactions) vs. over-engineering with smart contracts

Product Design:

  • Transparency doesn't mean dumping raw data on users
  • Progressive disclosure is key, show what's needed when it's needed
  • Dark themes help technical platforms feel less overwhelming

Problem-Solving Process:

  • Sometimes your initial solution is fundamentally flawed (escrow model)
  • Pivoting quickly is better than forcing a broken approach
  • Being honest about limitations makes the product more credible

What's next for CharityChain

v2:

  • XRPL Escrow Integration - Lock funds in escrow until milestone verification, then auto-release
  • Campaign Creation Flow - Let organizations create their own fundraisers with milestone structures
  • Real-time Updates - WebSocket integration to sh

Built With

Share this project:

Updates