AjoProtocol is an open-source, trustless community savings platform (ROSCA) that connects individuals and small business owners directly. By enabling transparent pool tracking, immutable payout schedules, and seamless crypto-backed contributions, we are cutting out the risk of human administrators. This directly improves access to finance for MSME growth, building a reliable working capital ecosystem for local markets.
This repository is a monorepo managed with pnpm workspaces and orchestrated by TurboRepo.
- Architecture: pnpm workspaces + TurboRepo
- Frontend (apps/mobile): React Native + Expo + TailwindCSS (NativeWind)
- Backend (apps/api): Node.js, Express, TypeScript
- Smart Contracts (apps/contracts): Soroban (Rust) & Stellar SDK
- Language: TypeScript (Strict Mode) & Rust
- For Members: Browse public savings circles, join with a linked Stellar wallet, make weekly/monthly contributions via stablecoins, and track your exact payout date.
- For MSMEs & Traders: Access bulk financing without traditional banking collateral. Draw down your payout directly to a local bank account or use it to pay verified wholesalers.
- Trust Layer: A decentralized reputation system. Members who consistently meet their contribution deadlines build on-chain credit scores, allowing them to join higher-tier pools.
- Crypto Payments: Automated fund locking and payouts powered by Soroban smart contracts on the Stellar network for fast, borderless, and tamper-proof transactions.
Ensure you have the following installed:
- Node.js (v18+)
- Rust (latest stable) & Soroban CLI
- pnpm (v8+)
# Enable pnpm via corepack
corepack enable
# OR install globally
npm install -g pnpm
Clone the repository and install all workspace dependencies:
git clone https://github.com/YOUR_ORG/ajo-protocol.git
cd ajo-protocol
pnpm install
Start all applications (Mobile, API, and local Soroban environment) in parallel using TurboRepo:
pnpm dev
Local Services:
- 📱 Mobile App: Expo Go (Local LAN/Simulator)
- ⚙️ Backend API:
http://localhost:3001 - 📜 RPC/Soroban:
http://localhost:8000
ajo-protocol/
├── apps/
│ ├── mobile/ # React Native Frontend (Member UI)
│ ├── api/ # Core Backend API (Express)
│ └── contracts/ # Soroban Rust Smart Contracts
│
├── packages/
│ ├── types/ # Shared TS interfaces & DTOs
│ ├── config/ # Shared configs (tsconfig, eslint)
│ └── ui/ # Shared UI logic/components
│
└── turbo.json # Build pipeline orchestration
Run these scripts from the root directory:
| Command | Description |
|---|---|
pnpm dev |
Starts all apps in development mode. |
pnpm build |
Builds all apps and packages for production. |
pnpm lint |
Runs ESLint across the entire monorepo. |
pnpm test |
Runs test suites across all packages and Rust contracts. |
pnpm clean |
Clears Turbo caches and build artifacts. |
Because this is a workspace, you must specify where packages belong.
Add to a specific app:
cd apps/api && pnpm add stellar-sdk
Link an internal package:
cd apps/mobile && pnpm add "@ajoprotocol/types@workspace:*" -D
We love contributions! AjoProtocol is community-driven, and we welcome developers of all skill levels to help build the future of decentralized savings.
- Read our
Contributing Guideto understand our workflow. - Review the
Code of Conductto keep our community approachable and respectable.
Important Rules:
- Always run
pnpm lintandmake test(for contracts) before pushing. - Keep shared logic inside the
packages/directory. - Do not manually edit
node_modules.
If you experience module errors after switching branches, clear your workspace:
rm -rf node_modules
pnpm install
This project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ by the AjoProtocol Community.