A decentralized crypto-charity donation platform built on the Internet Computer Protocol (ICP) using ckUSDT tokens for transparent, secure, and efficient charitable giving. It enables users to create and manage charity campaigns, make transparent donations using ckUSDT stablecoin, and receive unique NFT receipts as proof of their contributions, all managed securely on-chain.
flowchart TD
A0["Canister Backend
"]
A1["Wallet & Identity Management
"]
A2["Campaign Management System
"]
A3["ckUSDT Token Service
"]
A4["NFT Receipt System
"]
A5["Frontend User Interface
"]
A6["Deployment and Build Process
"]
A5 -- "Authenticates users via" --> A1
A5 -- "Interacts with" --> A0
A0 -- "Implements logic for" --> A2
A0 -- "Performs token operations via" --> A3
A0 -- "Mints NFTs via" --> A4
A5 -- "Queries balance from" --> A3
A5 -- "Displays NFTs from" --> A4
A6 -- "Deploys" --> A0
A6 -- "Builds & deploys" --> A5
- π° ckUSDT Donations: Stable token donations with low fees
- π Blockchain Transparency: All donations recorded on-chain
- π― Campaign Management: Create and manage charity campaigns
- π NFT Receipts: Unique NFT proof of donation
- π Secure Escrow: Milestone-based fund release
- π Real-time Dashboard: Track donations and impact
- π Web3 Wallet Integration: Internet Identity, Plug, Stoic support
- Donation Canister: Core donation logic and campaign management
- NFT Canister: ICRC-721 compliant donation receipt NFTs
- ckUSDT Integration: ICRC-1 token standard support
- Modern UI: Tailwind CSS with responsive design
- Wallet Integration: Multiple wallet provider support
- Real-time Updates: Live donation tracking
- Campaign Discovery: Browse and search campaigns
-
Clone the repository
git clone <repository-url> cd charity-dapp-icp
-
Install dependencies
npm install
-
Start the local Internet Computer replica
dfx start --background
-
Deploy canisters locally
dfx deploy
-
Start the frontend development server
npm run serve
-
Open your browser Navigate to
http://localhost:3000
charity-dapp-icp/
βββ src/
β βββ donation_canister/ # Main donation logic
β β βββ main.mo
β βββ nft_canister/ # NFT receipt system
β β βββ main.mo
β βββ charity_frontend/ # React frontend
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ contexts/ # React contexts
β β βββ pages/ # Page components
β β βββ services/ # API services
β β βββ types/ # TypeScript types
β βββ public/
βββ dfx.json # DFX configuration
βββ package.json # Node.js dependencies
βββ README.md
| Command | Description |
|---|---|
npm run build |
Build the frontend |
npm run dev |
Deploy and start development server |
npm run serve |
Start frontend development server |
dfx deploy --network local |
Deploy to local network |
dfx deploy --network ic |
Deploy to IC mainnet |
createCampaign()- Create a new charity campaigndonate()- Make a donation to a campaigngetDonations()- Get donations for a campaignwithdraw()- Withdraw funds (campaign owner only)getTotalStats()- Get platform statistics
mintDonationNFT()- Mint NFT receipt for donationtokenMetadata()- Get NFT metadatatokensOf()- Get NFTs owned by usertransfer()- Transfer NFT ownership
This dApp uses ckUSDT (Chain-key USDT) for donations:
- Stability: Pegged to USD value
- Low Fees: Minimal transaction costs on ICP
- Fast Transactions: Near-instant settlement
- Cross-chain: Bridged from Ethereum USDT
- Identity Verification: Internet Identity integration
- On-chain Validation: All transactions verified on blockchain
- Escrow System: Funds held until milestones met
- Audit Trail: Complete transaction history
- Access Control: Role-based permissions
- Responsive Design: Mobile-first approach
- Dark/Light Mode: User preference support
- Real-time Updates: Live donation tracking
- Accessibility: WCAG 2.1 compliance
- Performance: Optimized loading and caching
# Start local replica
dfx start --background
# Deploy canisters
dfx deploy
# Start frontend
npm run serve# Deploy to IC testnet
dfx deploy --network ic --wallet $(dfx identity get-wallet)# Deploy to IC mainnet
dfx deploy --network ic --with-cycles 1000000000000- Transaction Tracking: Monitor all donations
- Campaign Analytics: Track campaign performance
- User Metrics: Understand user behavior
- Financial Reporting: Generate donation reports
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Documentation: Internet Computer Docs
- Community: IC Discord
- Issues: GitHub Issues
- Internet Computer Protocol: For the decentralized infrastructure
- DFINITY Foundation: For the development tools and support
- ckUSDT: For stable token infrastructure
- React Community: For the amazing frontend framework
Built with β€οΈ on the Internet Computer