Logo Lanfrica

jeffTheItGuy/Zim-Mobile-Money

Domain:

digital infrastructuresocioeconomic

Record type:

software
Creator:
jef
Host:
A mobile money / agency banking system built for Zimbabwe. Supports multi-currency wallets (USD & ZIG), agent cash-in/cash-out, P2P transfers, double-entry ledger, and RBZ-compliant audit trails. # πŸ‡ΏπŸ‡Ό Zim Mobile Money A mobile money / agency banking system built for Zimbabwe. Supports multi-currency wallets (USD & ZIG), agent cash-in/cash-out, P2P transfers, double-entry ledger, and RBZ-compliant audit trails. ## Tech Stack | Layer | Tech | |-------|------| | Backend | Java 17, Spring Boot 3.3, PostgreSQL 16, Redis 7 | | Frontend | Vue 3, Vite, Pinia, Axios | | Infra | Docker, Docker Compose, Flyway | ## Quick Start ### 1. Clone & Configure ```bash git clone cd zim-mobile-money ``` Create a `.env` file (optional β€” defaults are provided): ```bash JWT_SECRET=your-256-bit-secret-here ``` ### 2. Run with Docker Compose ```bash docker-compose up --build ``` Services will be available at: - **Frontend** β†’ localhost - **Backend API** β†’ localhost - **PostgreSQL** β†’ localhost:5432 - **Redis** β†’ localhost:6379 ### 3. Run Locally (Dev Mode) **Backend:** ```bash cd backend ./mvnw spring-boot:run -Dspring-boot.run.profiles=dev ``` **Frontend:** ```bash cd frontend npm install npm run dev ``` The Vite dev server proxies `/api` to `localhost` automatically. ## Key Features - **Multi-currency wallets** β€” USD & ZIG with configurable daily/monthly limits - **Agent network** β€” Cash-in / cash-out with float tracking - **P2P transfers** β€” Phone-number based with 0.5% fee - **Double-entry ledger** β€” Every completed transaction posts immutable debit & credit entries - **Idempotency** β€” SHA-256 keys in Redis + PostgreSQL prevent double-posting - **Distributed locking** β€” Redis-based pessimistic locks on wallets & agent float - **Audit trail** β€” Async audit logs for all financial actions - **RBZ-ready** β€” Immutable ledger, reference numbers, and status tracking ## Default Users After registration, the system auto-creates a **USD wallet** for every user. Use the `/auth/login` endpoint (or the frontend login page) with your phone number and PIN. ## Environment Variables | Variable | Default | Description | |----------|------- …