A transparent healthcare fundraising platform.
A cancer patient in Quezon City faces ₱150,000 in hospital bills, but donors hesitate to contribute because existing fundraising platforms don't show how or when the money is actually spent — leaving the patient at risk of delayed treatment.
MedFund enables patients to launch verified fundraisers where donations are held in Stellar escrow and released only when hospitals or NGOs confirm treatment milestones — giving donors transparent, on-chain visibility of fund disbursement.
- USDC transfers for low-cost, stable-value donations
- Soroban smart contracts to enforce milestone-based escrow release
- Transparent payments viewable on-chain by donors
- Patients in Metro Manila and provincial hospitals who need urgent financial support
- Hospitals that want faster, verified payments without waiting for PhilHealth reimbursements
- NGOs like Caritas Manila, Kythe Foundation, and Philippine Red Cross that coordinate medical aid campaigns
- Donors, including overseas Filipinos, who want assurance their contributions reach the right patient
Transaction Flow:
- Patient creates fundraiser → Smart contract escrow initialized.
- Donor sends USDC → Transaction recorded on the Stellar ledger.
- Hospital/NGO verifies treatment milestones (e.g., surgery scheduled).
- Smart contract releases funds → Donor sees milestone completion and fund release on-chain.
MedFund directly addresses a real-world healthcare transparency gap in the Philippines, where PhilHealth and NGOs often cover only partial or delayed costs. It demonstrates Stellar's escrow, speed, and transparency in a sector with immediate human impact.
- Frontend: React + Vite, TypeScript
- Backend: Express (Node.js/TypeScript)
- Database/Auth: Supabase (Postgres, Row-Level Security, Google OAuth)
- Blockchain: Stellar Testnet (Horizon + Soroban), Freighter wallet
- Stablecoin: Circle USDC (Stellar testnet issuer)
- Node.js v18+
- Freighter Wallet browser extension, set to Testnet
- A Supabase project
- Git
git clone https://github.com/riamjs/medfund2.git
cd medfund2/main# Frontend (project root)
npm install
# Backend
cd backend
npm install
cd ..Frontend .env (project root):
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_PUBLISHABLE_KEY=your_supabase_publishable_key
VITE_HORIZON_URL=https://horizon-testnet.stellar.org
VITE_ESCROW_PUBLIC_KEY=your_escrow_stellar_public_key
VITE_USDC_ISSUER=GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5
VITE_USDC_CODE=USDC
VITE_BACKEND_URL=http://localhost:3001Backend .env (backend/.env):
SUPABASE_URL=your_supabase_project_url
SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
STELLAR_RPC_URL=https://soroban-testnet.stellar.org
HORIZON_URL=https://horizon-testnet.stellar.org
USDC_ISSUER=GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5
CONTRACT_ID=your_deployed_soroban_contract_id
ESCROW_SECRET_KEY=your_escrow_stellar_secret_key
PORT=3001- Generate a Stellar testnet keypair for escrow (or use an existing one).
- Fund it with XLM via Friendbot.
- Establish a USDC trustline (see
backend/src/setup-escrow.ts— run withnpx tsx src/setup-escrow.tsfrombackend/). - Fund it with testnet USDC via the Circle Faucet (select Stellar, paste your escrow public key).
In two separate terminals:
# Terminal 1 — backend (port 3001)
cd backend
npm run dev
# Terminal 2 — frontend (port 5173)
npm run devVisit http://localhost:5173.
- Sign in with Google.
- Connect your Freighter wallet (make sure it's set to Testnet).
- Browse fundraisers, donate USDC, or (as a verifier) approve fundraisers and release milestone funds.
| Name | Role |
|---|---|
| Riam Jaye Santiago | Founder (Solo Builder) |
- Stellar Network: stellar.org
- Stellar Expert (Testnet Explorer): stellar.expert/explorer/testnet

