Automated recurring payments for Kenya with M-Pesa (Django REST + React Native)
# PesaPlan
Automated recurring payments for Kenya with M-Pesa. Django REST backend for standing orders, wallets, and payment processing; React Native mobile app planned.
## Features
### Core
- **User Management**: Phone-based authentication with JWT tokens
- **Wallet System**: Digital wallet with balance tracking and transaction history
- **Standing Orders**: Automated recurring payments (daily, weekly, monthly, etc.)
- **M-Pesa Integration**: STK Push, C2B, and B2C payment processing
- **Transaction Management**: Comprehensive transaction tracking and audit logs
- **Notification System**: SMS, email, and push notifications
- **Security**: PIN-based authentication, rate limiting, and audit trails
### Advanced
- **Background Jobs**: Celery-based task processing for payment automation
- **Retry Logic**: Automatic retry for failed payments
- **Compliance**: Audit logs and transaction traceability
- **Scalability**: Redis caching and PostgreSQL database
- **Monitoring**: Health checks and comprehensive logging
## Stack
### Backend
- **Django 4.2** - Web framework
- **Django REST Framework** - API development
- **PostgreSQL** - Primary database
- **Redis** - Caching and Celery broker
- **Celery** - Background task processing
- **M-Pesa Daraja API** - Payment processing
### Frontend (planned)
- **React Native** - Mobile application
- **React.js** - Admin dashboard
## Project structure
```
pesaplan/
├── backend/
│ ├── pesaplan/
│ │ ├── apps/
│ │ │ ├── users/ # User management
│ │ │ ├── wallets/ # Wallet operations
│ │ │ ├── standing_orders/ # Recurring payments
│ │ │ ├── transactions/ # Transaction tracking
│ │ │ ├── payments/ # M-Pesa integration
│ │ │ └── notifications/ # Communication system
│ │ ├── settings/ # Environment-specific settings
│ │ ├── utils/ # Utility functions
│ │ └── requirements/ # Python dependencies
│ ├── docker-compose.yml …