Decentralized Community Savings Platform - Bringing traditional Ajo/Esusu savings circles on-chain with blockchain transparency and automation.
Ajosave is a decentralized finance (DeFi) platform that digitizes traditional community savings practices (known as Ajo, Esusu, Tontine, or Rotating Savings and Credit Associations - ROSCAs) using blockchain technology. Built for African communities and accessible globally, Ajosave enables trustless, transparent, and automated savings group management.
β¨ Three Pool Templates with Guided Setup:
- Rotational Savings β Traditional turn-based payouts with automated reminders and penalties
- Target Pool β Lock contributions until your collective goal or deadline is reached
- Flexible Pool β Let members deposit/withdraw anytime while routing idle funds into yield strategies
π Security & Transparency:
- Open-source Solidity contracts verified on Sourcify
- Automatic enforcement of rules, penalties & grace periods
- Activity feeds mirrored in Supabase for off-chain context
- Non-custodial architectureβno treasurers or middlemen
π Multi-Chain Support:
- Deploy to Celo (mobile-first, low-fee) or Base (Ethereum L2) with a single codebase
- WalletConnect / MetaMask integration with one-click network switching
- Treasury address shared across chains for unified accounting
π± Modern Web Interface:
- Redesigned hero, feature, and CTA sections with deployment stats
- Dashboard tabs for groups, transactions, and profile management
- Real-time activity feed powered by Supabase
- shadcn/ui component system for cohesive theming
ajo/
βββ frontend/ # Next.js 15 web application
β βββ app/ # App router pages
β βββ components/ # React components
β βββ hooks/ # Custom React hooks
β βββ lib/ # Utilities and Supabase client
β
βββ smartcontract/ # Foundry smart contracts
βββ src/ # Solidity contracts
βββ script/ # Deployment scripts
βββ test/ # Contract tests
- Node.js 18+ and npm/yarn/pnpm
- Git
- Wallet (MetaMask, WalletConnect, etc.)
- Supabase Account (for database)
-
Clone the repository
git clone <repository-url> cd ajo/frontend
-
Install dependencies
npm install # or yarn install # or pnpm install
-
Set up environment variables
Copy
.env.exampleto.env.local:cp .env.example .env.local
Update
.env.localwith your credentials:# Contract addresses (already configured for Celo Sepolia) NEXT_PUBLIC_FACTORY_ADDRESS=0xa71C861930C0973AE57c577aC19EB7f11e7d74a6 NEXT_PUBLIC_TOKEN_ADDRESS=0x24642ffABF43D4bd33e1E883A23E10DdFde186c6 # Supabase (get from https://app.supabase.com) NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key-here
-
Set up Supabase database
See detailed instructions in
frontend/SUPABASE_SETUP.mdQuick steps:
- Create a project at supabase.com
- Run the SQL schema from
frontend/supabase_schema.sqlin the SQL Editor - Copy your project URL and anon key to
.env.local
-
Run the development server
npm run dev
Open http://localhost:3000 in your browser.
-
Install Foundry
curl -L https://foundry.paradigm.xyz | bash foundryup -
Navigate to smartcontract directory
cd smartcontract -
Install dependencies
forge install
-
Build contracts
forge build
-
Run tests
forge test
For deployment instructions, see smartcontract/DEPLOY.md
| Contract | Address | Explorer |
|---|---|---|
| BaseToken (BST) | 0x24642ffABF43D4bd33e1E883A23E10DdFde186c6 |
View on CeloScan |
| BaseSafeFactory | 0xa71C861930C0973AE57c577aC19EB7f11e7d74a6 |
View on CeloScan |
| Contract | Address | Explorer |
|---|---|---|
| BaseToken (BST) | 0xa71C861930C0973AE57c577aC19EB7f11e7d74a6 |
View on BaseScan |
| BaseSafeFactory | 0xCF4078f1c5C5e051Ae2442e5758b6Eaf548AD780 |
View on BaseScan |
Treasury Address: 0xa91D5A0a64ED5eeF11c4359C4631279695A338ef
All contracts are verified on Sourcify and block explorers.
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS 4
- UI Components: shadcn/ui + Radix UI
- Web3: Wagmi + Viem + Reown AppKit
- Database: Supabase (PostgreSQL)
- Animations: Framer Motion
- Language: Solidity 0.8.30
- Framework: Foundry (Forge)
- Libraries: OpenZeppelin Contracts
- Networks: Celo, Base
- EVM: Prague
- Frontend Setup:
frontend/README.md - Supabase Setup:
frontend/SUPABASE_SETUP.md - Smart Contract Deployment:
smartcontract/DEPLOY.md - Deployment Addresses:
smartcontract/DEPLOYMENTS.md - Grant Activity:
smartcontract/GRANT_ACTIVITY_CELO_DEPLOYMENT.md
- Choose your pool type (Rotational, Target, or Flexible)
- Set contribution amounts, frequency, and member list
- Deploy a new smart contract pool via the factory
- Members connect their wallets
- Approve token spending for the pool
- Make initial deposits
- Smart contracts enforce rules automatically
- Late payments are flagged
- Rotational payouts execute on schedule
- Activity is logged on-chain and in the database
- All transactions visible on block explorers
- Real-time dashboard updates
- Activity feed for all pool events
- Audited Smart Contracts: Built with OpenZeppelin battle-tested libraries
- Multi-sig Treasury: Controlled treasury address for fee collection
- Immutable Rules: Pool parameters cannot be changed after creation
- Non-custodial: Users always control their funds
- Open Source: All code is publicly auditable
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- OpenZeppelin for secure contract libraries
- Celo Foundation for blockchain infrastructure
- Base Network for L2 scaling solution
- The African communities who inspired this project
- Website: ajosave.app
- Issues: GitHub Issues
- Documentation: See docs in respective directories
Built with β€οΈ for African communities and the global DeFi ecosystem
Note: Contract names like BaseSafeFactory remain unchanged as they are technical identifiers and would require contract redeployment to change.