Multi-service payment backend for African markets: mobile money, cards (via PSPs), bank transfers, wallets, double-entry ledger, webhooks, subscriptions, and payouts. PSP integrations use an adapter layer (Flutterwave, Paystack, CinetPay) with routing, failover, and Resilience4j circuit breakers.
# AfriPay Platform
Multi-service payment backend for African markets: mobile money, cards (via PSPs), bank transfers, wallets, double-entry ledger, webhooks, subscriptions, and payouts. PSP integrations use an **adapter** layer (Flutterwave, Paystack, CinetPay) with routing, failover, and **Resilience4j** circuit breakers.
## Stack
| Layer | Technology |
| ------------- | -------------------------------------------------------------------------------- |
| Runtime | Java **17** (Spring Boot parent); use **JDK 21** in production if desired |
| Framework | Spring Boot **3.4**, Spring Cloud **2024** |
| API edge | Spring Cloud Gateway (rate limiting via Redis) |
| Data | PostgreSQL (per-service **schemas** + Flyway), Redis |
| Messaging | Kafka |
| Observability | Actuator, Micrometer, Prometheus, Grafana (see Monitoring) |
| API docs | springdoc OpenAPI (Swagger UI per service) |
## Documentation
- Architecture — sequence-style flows, Kafka topics,
idempotency, orchestrator routing, failure modes
- Operations — environment variables, dependencies,
scaling, backups, CI, runbook prompts
- Contributing — Maven modules, adding a PSP adapter,
database migrations
- Monitoring — Prometheus, Grafana, metrics endpoints
## Architecture
Services (ports are local defaults):
| Service | Port | Role |
| ------------------------------ | ---- | --------------------------------------------------------------------------- |
| `api-gateway` | 8080 | Routes, JWT validation, Redis rate limits |
| `auth-service` …