A decentralized payment splitting app for Base and Celo. Create on-chain split contracts that distribute ETH or USDC to multiple recipients using predefined percentages.
SPLIT makes payment distribution simple for teams, DAOs, and creators. Create a split contract once, deposit funds, and trigger a distribution whenever you are ready. The platform charges a 0.5% fee on distributions to support ongoing development.
- USDC Splitting on Base and Celo: Create and distribute USDC splits across both networks
- ETH Support: Split native ETH payments alongside USDC
- Flexible Distribution: Define custom percentage splits for any number of recipients
- Factory-Based Contracts: Deploy and manage splits through a single factory contract
- Wallet Integration: Connect with MetaMask, WalletConnect, and other Web3 wallets
- Simple Dashboard: Create, fund, distribute, and finalize splits from one place
- Create a Split: Add recipients and percentage shares
- Deposit Funds: Send ETH or USDC to the split contract
- Distribute: Trigger a distribution when you are ready
- Finalize: Lock the contract once distributions are complete
- Base Mainnet (USDC and ETH)
- Celo Mainnet (USDC and ETH)
- 0.5% fee on all distributions (50 basis points)
- Fees are sent to a treasury address for platform sustainability
- Node.js 18+
- npm or pnpm
- A Web3 wallet (MetaMask, etc.)
- Clone the repository:
git clone https://github.com/Macnelson9/Split-app.git
cd Split-app- Install dependencies:
npm install --legacy-peer-deps
# or
pnpm install --legacy-peer-deps- Create environment variables:
cp .env.example .env.local-
Configure your environment variables (API keys, etc.)
-
Run the development server:
npm run dev
# or
pnpm dev- Open
http://localhost:3000in your browser
- Click "Connect Wallet" on the homepage
- Select your preferred wallet
- Ensure you are connected to Base mainnet or Celo mainnet
- Navigate to the Split Dashboard
- Click "Create Split"
- Select the token type (ETH or USDC)
- Add recipient addresses and their percentage shares
- Ensure percentages total 100%
- Confirm the transaction
- Deposit: Add funds to an active split contract
- Distribute: Automatically send funds to recipients according to percentages
- Finalize: Lock the contract when distribution is complete
- View History: Track all your created splits
The application uses two main contracts:
- SplitContract: Individual split contracts that handle fund distribution
- SplitFactory: Factory contract for creating and managing split contracts
distributeEth(): Distributes ETH according to recipient percentagesdistributeToken(): Distributes USDC according to recipient percentagesdepositEth(): Deposits ETH into the contractdepositToken(): Deposits USDC into the contractfinalize(): Locks the contract permanently
- OpenZeppelin libraries for trusted contract primitives
- ReentrancyGuard protection on state-changing functions
- SafeERC20 for secure token transfers
- Only contract creators can trigger distributions
- Contracts can be finalized to prevent further changes
- Frontend: Next.js 15, React 19, TypeScript
- Styling: Tailwind CSS, Radix UI components
- Web3: Wagmi, Viem
- Smart Contracts: Solidity, OpenZeppelin
- Animations: Framer Motion, GSAP
We welcome contributions to SPLIT:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Make your changes
- Run tests:
npm test - Submit a pull request
- Smart contract audits and improvements
- UI and UX enhancements
- Additional token support
- Multi-chain expansion
- Tests and documentation
This project is licensed under the MIT License - see the LICENSE file for details.
For questions, suggestions, or support:
- Create an issue on GitHub
- Email: ucheofatu@gmail.com
Built with care.