AfriLoop is a cross-border payment gateway facilitating seamless currency conversion and mobile money interoperability across Africa.
# AfriLoop - Cross-Border African Payment Hub
**AfriLoop** is a high-performance, cross-border payment gateway specifically engineered for the African financial landscape. It provides a unified API and dashboard for multi-currency wallets, seamless FX conversion, and deep integrations with major African Mobile Money providers.
## 🚀 Key Features
- **Multi-Currency Engine**: Manage balances across multiple African currencies (KES, NGN, GHS, ZAR, UGX, etc.) alongside USD.
- **Cross-Border Transfers**: Optimized regional money movement with real-time tracking and delivery method selection (Mobile Money, Bank Transfer, Cash Pickup).
- **Mobile Money Interoperability**: Direct integration with providers like M-Pesa, enabling both payment collection and disbursements.
- **Merchant Ecosystem**: Advanced API key management, webhook support, and analytics for businesses of all sizes.
- **FX & Conversion**: Real-time tracking of African currency corridors with automated conversion logic.
- **Aesthetic Dashboard**: A modern React-based admin/merchant portal featuring high-fidelity charts and real-time activity feeds.
---
## 🏗️ Technical Architecture
The project is built as a **pnpm monorepo**, ensuring a modular, testable, and maintainable codebase.
### Core Stack
- **Frontend**: React 19, Vite 7, Tailwind CSS 4, Framer Motion, Recharts.
- **Backend**: Node.js 24, Express 5, TypeScript 5.9.
- **Database**: PostgreSQL with Drizzle ORM.
- **API Strategy**: OpenAPI 3.1 contract-first with Orval codegen.
### Project Structure
- `lib/api-spec`: The source of truth (OpenAPI YAML).
- `lib/db`: Unified database schema and migrations.
- `lib/api-client-react`: Auto-generated type-safe React hooks for data fetching.
- `artifacts/afropay`: The main merchant/admin web application (**AfriLoop Gateway**).
- `artifacts/api-server`: The core backend service.
---
## 🛠️ Getting Started
### Prerequisites
- **Node.js**: v24 or later
- **pnpm**: v9 or …