Developed by @byigitt & @phun333 from @wiredwiredwired
Modern, decentralized crowdfunding platform built on Stellar blockchain with Soroban smart contracts.
- Contract (Testnet):
CDLKPA54COCVUIZWI2SCAVADLUX4ALKLFXNIFRRT4Q4C3CL2E3BF5VAE
- Network: Stellar Testnet
- Demo: Run locally after setup
- β Campaign Creation - Create crowdfunding campaigns with XLM goals
- β Real XLM Contributions - Native Stellar Lumens transactions
- β Live Tracking - Real-time funding progress via blockchain
- β Wallet Integration - Freighter wallet connectivity
- β Theme Support - Dark/light mode with responsive design
- π Blockchain Verified - All data on Stellar network
- π Non-custodial - Users control their funds
- π Real-time Updates - Live campaign monitoring
- π Decentralized - No central authority
- Next.js 14 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS + ShadCN/UI - Modern styling
- React Hook Form + Zod - Form management
- Soroban SDK 21.0.0 - Stellar smart contracts
- Rust 2021 - Systems programming
- WebAssembly - Contract deployment
- Stellar Testnet - Blockchain platform
- Freighter Wallet - Browser extension
- Horizon API - Blockchain data access
xlm-crowdfunding/
βββ π frontend/ # Next.js Application
β βββ π app/ # App Router (pages)
β β βββ dashboard/ # Main DApp interface
β β βββ page.tsx # Landing page
β β βββ layout.tsx # Root layout
β βββ π components/ # React components
β β βββ ui/ # ShadCN/UI components
β β βββ layout/ # Layout & sections
β βββ π public/ # Static assets
βββ π contract/ # Soroban Smart Contracts
β βββ src/lib.rs # Main contract
β βββ Cargo.toml # Rust config
βββ deploy.sh # Deployment script
βββ README.md # This file
# Rust toolchain
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup target add wasm32-unknown-unknown
cargo install --locked soroban-cli
# Node.js 18+
node --version # v18+
npm --version # v9+
- Freighter Wallet: Install from freighter.app
- Stellar Testnet Account: Get testnet XLM
git clone https://github.com/wiredwiredwired/xlm-crowdfunding.git
cd xlm-crowdfunding
cd contract
soroban contract build
cd ../frontend
npm install
# Create environment file
echo 'NEXT_PUBLIC_CONTRACT_ID="your_contract_id"
NEXT_PUBLIC_STELLAR_NETWORK="TESTNET"
NEXT_PUBLIC_HORIZON_URL="https://horizon-testnet.stellar.org"
NEXT_PUBLIC_NETWORK_PASSPHRASE="Test SDF Network ; September 2015"' > .env.local
# Start development server
npm run dev
chmod +x deploy.sh
./deploy.sh
# Deploy contract
cd contract
soroban contract deploy \
--wasm target/wasm32-unknown-unknown/release/crowdfunding.wasm \
--source alice \
--network testnet
# Deploy frontend
cd ../frontend
npm run build
vercel # or netlify deploy --prod
- Install Freighter Wallet
- Create Stellar testnet account
- Fund with testnet XLM
- Connect wallet in DApp
// Create campaign
const campaign = {
title: "My Project",
goalAmount: 1000, // XLM
};
// Contribute to campaign
const contribution = {
campaignId: "campaign_123",
amount: 50, // XLM
};
pub struct Campaign {
pub id: u32,
pub owner: Address,
pub title: String,
pub goal_amount: i128,
pub current_amount_raised: i128,
}
// Create new campaign
pub fn create_campaign(env: Env, owner: Address, title: String, goal_amount: i128) -> u32
// Contribute to campaign
pub fn contribute(env: Env, contributor: Address, campaign_id: u32, amount: i128) -> bool
// Get all campaigns
pub fn get_campaigns(env: Env) -> Vec<Campaign>
// Get specific campaign
pub fn get_campaign(env: Env, campaign_id: u32) -> Option<Campaign>
cd contract
cargo test
cd frontend
npm install --save-dev @testing-library/react @testing-library/jest-dom jest
npm test
- Authentication: All transactions require address signature
- Input Validation: Comprehensive validation on all inputs
- Non-custodial: Users control their private keys
- Audit Trail: Complete transaction logging
- Network Verification: Testnet safety
- Fork the repository
- Create feature branch:
git checkout -b feature/amazing-feature
- Install dependencies and follow setup guide
- Make changes and test thoroughly
- Submit pull request
- Follow ESLint/Prettier for frontend
- Use Rust clippy for smart contracts
- Add tests for new functionality
- Update documentation
feat(scope): add new feature
fix(scope): fix bug
docs: update documentation
style: format code
test: add tests
- Stellar Laboratory - Transaction testing
- StellarExpert - Blockchain explorer
- Freighter Wallet - Browser wallet
- GitHub Issues - Bug reports & features
- Stellar Discord - Developer community
- Stack Overflow - Q&A
MIT License - see LICENSE file for details.
Built with:
- Stellar - Blockchain platform
- Soroban - Smart contracts
- Next.js - React framework
- Tailwind CSS - Styling
- ShadCN/UI - UI components