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