🌱 Inspiration
Traditional crowdfunding platforms are centralized, restrictive, and opaque. They decide who can raise funds, take high fees, and give contributors no cryptographic guarantee that their money is safe. I wanted to build a platform where fundraising is permissionless, transparent, and provably fair — entirely enforced by code, not by a corporation.
Polkadot’s ink! ecosystem and its Rust-based smart contract safety inspired me to build InkFundMe as a fully on-chain alternative.
💡 What it does
InkFundMe is a decentralized crowdfunding platform where anyone can:
- Create fundraising campaigns
- Contribute using a custom on-chain token
- Finalize campaigns when deadlines end
- Automatically receive refunds if a campaign fails
- Mint test tokens via a built-in faucet
- View all events and updates in real-time
All logic is executed by ink! smart contracts, ensuring complete transparency and eliminating the need for third-party trust.
🏗️ How we built it
Smart Contracts (ink!)
- Built two ink! contracts:
- A custom ERC20-like token (
INKFUNDME) - The core crowdfunding contract
- A custom ERC20-like token (
- Implemented contribution tracking, deadlines, funding goals, and refund logic
- Designed safe contract state transitions using Rust patterns
- Exposed query and mutation endpoints consumed directly by the frontend
- Implemented events for real-time UI updates via subscriptions
Frontend (React + PAPI + ReactiveDOT)
- Developed a modern UI using React 19 + Vite
- Styled with TailwindCSS and shadcn/ui
- Integrated with Polkadot API via PAPI for type-safe contract calls
- Used ReactiveDOT to watch chain updates and sync the UI instantly
- Added responsive components, notifications, and loading states
- Deployed on Vercel for global accessibility
🧱 Challenges we ran into
- Cross-contract calls with ink!’s
transfer_fromandmintrequired careful structuring - Managing real-time updates with ReactiveDOT without UI flicker
- Ensuring contributors could only refund under correct conditions
- Handling deadline and campaign state edge cases
- Mapping between SS58 addresses and EVM-like addresses for token logic
- Providing a smooth UX despite blockchain confirmation delays
- Designing clear and safe error handling across contracts
🏆 Accomplishments that we're proud of
- Built a fully functioning decentralized crowdfunding dApp end-to-end
- Implemented safe ink! contract logic from scratch
- Achieved seamless blockchain interactions with zero backend
- Delivered a clean, modern UI with real-time updates
- Created a complete tutorial for new developers learning ink!
- Successfully deployed contracts and frontend to a public testnet
📚 What we learned
- Advanced ink! development: storage management, event-driven design, cross-contract calls
- Building reactive UIs driven entirely by blockchain state
- Managing asynchronous workflows and user feedback in Web3 contexts
- Substrate account systems and address derivation
- The importance of designing smart contract logic like a state machine
- Best practices for safe contract architecture and predictable user experience
🚀 What's next for InkFundMe
- Multi-token support: allow campaigns in any whitelisted asset
- Milestone-based payouts with on-chain verification
- Social features (profiles, comments, campaign endorsements)
- IPFS integration for decentralized campaign metadata
- Campaign discovery & categories
- DAO governance for community curation
- Mobile-first UI enhancements
InkFundMe is a strong foundation for a fully decentralized fundraising ecosystem — and we’re just getting started.
Built With
- ink
- papi
- react
Log in or sign up for Devpost to join the conversation.