A Decentralized, Transparent, and Secure Crowdfunding Platform built on Stellar Soroban.
π’ Live Production Link: https://fundr-green.vercel.app
βΆοΈ Youtube Video Link : https://youtu.be/81VFHshgxiw
Fundr is a next-generation decentralized crowdfunding platform designed to eliminate fraud, guarantee fund delivery, and provide unmatched transparency for charitable causes, startup ideas, and community projects.
By leveraging Stellar's Soroban Smart Contracts, Fundr ensures that backers' funds are held safely in a programmatic escrow and are only released to campaign creators if their funding goals are met. If a campaign fails to reach its goal by the deadline, backers can instantly withdraw their pledges, completely eliminating platform exit scams and traditional banking hold-ups.
- Trustless Escrow: Funds are never held by an intermediary. They are secured directly within an on-chain smart contract.
- Guaranteed Refunds: If a campaign misses its funding target, smart contract logic guarantees that backers can easily retrieve their XLM. No manual processing or chargebacks required.
- Immutable Goal Enforcement: Campaign creators cannot alter their funding targets or deadlines once the campaign is deployed on-chain.
- KYC Identity Verification: Creators undergo strict admin-approved KYC (Know Your Customer) reviews before they are permitted to deploy campaigns, protecting the platform from anonymous bad actors.
- Platform Sustainability: A built-in 5% maintenance fee is automatically and transparently routed to the platform administrators during a successful withdrawal, aligning platform success with creator success.
| Category | Technology | Purpose |
|---|---|---|
| Frontend Framework | Next.js 14 (App Router) | React framework for SSR and optimized routing |
| Styling | Tailwind CSS & Vanilla CSS | Modern, responsive, and highly-customizable UI |
| Backend & Auth | Supabase | PostgreSQL database, Auth, RLS Policies, and Storage |
| Smart Contracts | Rust (Soroban) | Writing secure, fast, and lightweight blockchain logic |
| Blockchain Integration | @stellar/stellar-sdk & Freighter |
Interacting with Horizon/Soroban RPC and signing transactions |
| Deployment | Vercel | Global edge network hosting for the frontend application |
The platform utilizes a Factory pattern to dynamically spawn isolated escrow contracts for each campaign.
| Contract Name | Contract ID (Testnet) | Verification Link |
|---|---|---|
| Crowdfund Factory | CBCEVQXYDJXFW6PLP4BDHXBDSR7HPU6YBV6LPSGNKLLX2BKUV35PYTMU |
Verify on Stellar Expert |
| Campaign Template (Sample) | CCJLG4SZUMZGZLOMVWFCPSB4BIPH6A2ZJBGFDEV6VABDWCNXWXNH37A7 |
Verify on Stellar Expert |
You can verify these addresses on Stellar Expert Testnet.
Fundr/
βββ app/ # Next.js App Router Pages
β βββ (auth)/ # Login, Register, Forgot Password
β βββ (protected)/ # Admin Dashboard, Creator Dashboard, KYC, Manage Campaigns
β βββ campaigns/ # Public Campaign display pages
β βββ globals.css # Global Tailwind and Design System Tokens
βββ components/ # Reusable React Components
β βββ admin/ # Admin specific tables and controls
β βββ campaigns/ # Campaign cards, withdrawal buttons
β βββ dashboard/ # Stat cards and dashboard tables
β βββ fund/ # Interactive funding forms
β βββ layout/ # Navbars, Footers, and Protected Sidebars
β βββ ui/ # Reusable base UI (Buttons, Tooltips, Verification tags)
βββ contracts/ # Rust Smart Contracts
β βββ campaign/ # Escrow and logic for individual campaigns
β βββ crowdfund-factory/ # Factory for dynamic campaign deployment
βββ hooks/ # Custom React Hooks
β βββ useSorobanIntegration.ts # Modularized Freighter and smart contract integration logic
βββ lib/ # Utilities and Integrations
β βββ stellar/ # Soroban SDK, Freighter wallet, and RPC wrappers
βββ sql/ # Supabase Database Migrations & RLS Policies
βββ scripts/ # Deployment & E2E Testing scripts
βββ types/ # TypeScript interfaces & Supabase DB Types
graph TD;
A[Visitor] -->|Signs Up| B["Account Created"];
B --> C{User Role};
C -->|Backer| D["Browse Campaigns"];
D --> E["Connect Freighter Wallet"];
E --> F["Pledge XLM via Contract"];
C -->|Creator| G["Submit KYC"];
G --> H["Admin Reviews KYC"];
H -->|Approved| I["Create Campaign Draft"];
I --> J["Admin Publishes to Chain via Factory"];
J --> K["Campaign is Live"];
K --> L{Deadline Reached?};
L -->|Goal Met| M["Creator Withdraws XLM (5% Fee)"];
L -->|Goal Failed| N["Backers Refunded"];
graph LR;
A["Web Client"] -->|Calls Factory| B["CrowdfundFactory Contract"];
B -->|deploy_v2| C["Campaign Contract (Instance)"];
A -->|"Calls pledge()"| C;
A -->|"Calls withdraw()"| C;
A -->|"Calls refund()"| C;
| Layer | Feature | Description |
|---|---|---|
| Frontend | Multi-Role Dashboards | Distinct, secure routing and UI for Backers, Creators, and Admins. |
| Frontend | Real-time Metrics | Aggregates on-chain contributions and displays dynamic progress bars. |
| Frontend | Modular Hooks | Extracted Stellar and Freighter integrations into highly reusable React hooks (e.g. useSorobanIntegration). |
| Backend | Admin KYC & Moderation | Immutable KYC application flow with admin approval gates. |
| Backend | Row Level Security (RLS) | Strict PostgreSQL policies ensuring users can only modify their own data. |
| Contract | Factory Deployment | Uses deploy_v2 to spawn isolated contract state for every single campaign. |
| Contract | Trustless Escrow | Smart contract securely holds XLM without central authority intervention. |
| Contract | Conditional Withdrawals | Creators can only withdraw if pledged >= goal and the deadline has passed. |
| Contract | Platform Fee Routing | Hardcoded 5% network maintenance fee sent to the admin wallet on withdrawal. |
| Scenario | Handled By | User Feedback |
|---|---|---|
| Wallet Not Installed | Frontend Guard | "Freighter is not installed. Please install the extension." |
| User rejects transaction | Wallet Provider | Graceful catch displaying "Transaction rejected by user." |
| Funding an expired campaign | Smart Contract | Contract panics: "campaign closed", bubbled up to UI. |
| Withdrawing before deadline | Smart Contract | Contract panics: "campaign still active". |
| Withdrawing below goal | Smart Contract | Contract panics: "goal not met, cannot withdraw". |
| Invalid form inputs | Server Actions / Zod | Inline red text displaying exact validation errors. |
The platform's critical functionality is thoroughly tested via automated Node E2E scripts and Rust contract unit tests.
| Level | Criteria | Status |
|---|---|---|
| Level 1 | Wallet connect / disconnect | β |
| Level 1 | Balance display | β |
| Level 1 | Send XLM transaction | β |
| Level 1 | Transaction feedback | β |
| Level 1 | 3+ error types handled | β |
| Level 2 | Smart contracts deployed on Testnet | β |
| Level 2 | Contract calls working (Factory, Pledging, Withdrawal, Refund) | β |
| Level 2 | Multi-wallet support (Freighter) | β |
| Level 2 | Real-time on-chain status | β |
| Level 3 | Inter-contract calls (Factory β Campaign deploy_v2) |
β |
| Level 3 | E2E route & contract tests passing | β |
| Level 3 | Mobile responsive | β |
| Level 3 | Application live on Vercel | β |
| Submission | Complete README with architecture | β |
| Submission | Contract addresses documented with Tx links | β |
| Submission | Contracts test done and added | β |
- Create a project on Supabase.
- Navigate to the SQL Editor and run the complete schema script:
cat sql/full_schema.sql | # Execute this entire file in the Supabase SQL editor
To build and deploy the contracts locally to Testnet:
# Compile contracts
soroban contract build
# Run deployment script
node scripts/deploy-contracts.mjsNote: Make sure to update your .env.local with the new Contract IDs.
- Clone the repository and install dependencies:
npm install
- Create a
.env.localfile based on.env.exampleand fill in your Supabase and Stellar credentials. - Start the development server:
npm run dev
Built with β€οΈ for the Stellar Ecosystem.
Thank you for reviewing the Fundr Project!


















