Decentralized rotating savings circles (Ajo/Esusu) on Celo blockchain.
- Create Circles - Start a savings circle with friends/family
- Join Circles - Browse and join open circles
- Weekly Contributions - Contribute cUSD or cEUR each cycle
- Rotating Payouts - Members receive the pool in rotating order
- Yield Generation - Optional Moola Market integration for interest
- Farcaster Integration - Native mini-app experience
| Contract | Address |
|---|---|
| SusuFactory | 0x65C64b5235d1d5e6e4708fc6013907caB506841e |
| cUSD | 0x765DE816845861e75A25fCA122bb6898B8B1282a |
| cEUR | 0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73 |
| Self Protocol Hub | 0xe57F4773bd9c9d8b6Cd70431117d353298B9f5BF |
CeloSusu integrates Self Protocol for identity verification:
- Proof of Humanity: Verifies users are unique humans via passport/ID scan
- Sybil Resistance: Prevents one person from filling circles with multiple wallets
- Privacy Preserving: Uses zero-knowledge proofs — no personal data stored
- Age Verification: Ensures users are 18+ for financial services
- User clicks "Verify & Join" on a circle
- QR code appears for scanning with Self app
- User scans passport/ID with Self app
- Zero-knowledge proof sent to our backend
- Verified users can join circles
src/components/SelfVerification.tsx- QR code verification componentsrc/app/api/self/verify/route.ts- Backend verification endpoint
npm installnpm run devnpm run build- Push to GitHub
- Import to Vercel
- Deploy
# Or use Vercel CLI
npx vercelEdit public/.well-known/farcaster.json:
- Replace
your-domain.comwith your actual domain - Generate account association signature (see Farcaster docs)
- Add your app icons
Add to public/:
icon.png- 200x200 app iconog-image.png- 1200x630 Open Graph imagesplash.png- Splash screen image
- Deploy to your domain
- Verify manifest at
yourdomain.com/.well-known/farcaster.json - Submit to Farcaster mini-app directory
celosusu-app/
├── public/
│ └── .well-known/
│ └── farcaster.json # Farcaster manifest
├── src/
│ ├── app/
│ │ ├── globals.css # Global styles
│ │ ├── layout.tsx # Root layout
│ │ └── page.tsx # Home page
│ ├── components/
│ │ ├── Header.tsx # App header
│ │ ├── TabNav.tsx # Tab navigation
│ │ ├── CircleCard.tsx # Circle list card
│ │ ├── CircleDetailModal.tsx # Circle details
│ │ ├── CreateCircleModal.tsx # Create circle form
│ │ ├── EmptyState.tsx # Empty state display
│ │ └── LoadingSpinner.tsx # Loading indicator
│ ├── config/
│ │ ├── contracts.ts # Contract addresses & ABIs
│ │ └── wagmi.ts # Wagmi configuration
│ ├── hooks/
│ │ ├── useContracts.ts # Contract interaction hooks
│ │ └── useFarcaster.ts # Farcaster SDK hooks
│ └── providers/
│ └── WagmiProvider.tsx # Wagmi + React Query
├── package.json
├── tailwind.config.js
├── tsconfig.json
└── next.config.js
This project qualifies for:
| Track | Requirement | Status |
|---|---|---|
| MiniApp | Farcaster mini-app | ✅ |
| Self Protocol | Identity verification | ✅ +$250 |
| Open Track | Mento stablecoins | ✅ |
| Base Prize Pool | Quality submission | ✅ |
- Working deployment
- Open source repository
- Verified contract on mainnet
- Demo video (3-4 min)
- README documentation
- Live deployment link
- Framework: Next.js 14
- Wallet: Wagmi + Viem
- Styling: Tailwind CSS
- Chain: Celo Mainnet
- DeFi: Moola Market (yield)
- Identity: Self Protocol (verification)
- Create Circle: Set name, contribution amount, token (cUSD/cEUR), yield preference
- Invite Members: Share circle link, members join (3-12 members)
- Start Circle: Creator starts when 3+ members joined
- Contribute Weekly: All members contribute each 7-day cycle
- Receive Payout: One member receives full pool each cycle (rotating order)
- Complete: After all members have received, circle completes
- Always test with small amounts first
- Users must approve token spending before contributing
- Circle creator cannot leave after creation
- Yield adds smart contract risk (Moola Market)
- Telegram: @proofofship
- Twitter: @CeloDevs
MIT