A comprehensive microservices-based banking wallet system (Mini Wave/PayPal clone) built with Python FastAPI, Docker, and PostgreSQL.
The system consists of 6 microservices:
- API Gateway: Public entry point, handles auth and routing.
- Auth Service: User registration and JWT authentication.
- Wallet Service: Manage wallets, balances, and freezing.
- Transaction Service: Handles deposits, withdrawals, and transfers (ACID compliance & locking).
- Notification Service: Consumes events (RabbitMQ) to send emails.
- Admin Service: Administrative actions (Ban, Freeze, View Txns).
- Docker & Docker Compose
- Python 3.12+ (for local dev)
-
Configure Environment: Copy the example environment file and adjust if necessary:
cp .env.example .env
-
Run Services: Run the entire stack in detached mode:
docker compose up --build -d
-
Wait for Ready: Wait 10-15 seconds for databases and RabbitMQ to fully initialize before accessing the API. See Docker Guide for details.
Run services locally with our helper scripts:
./local-install.sh
./local-run.shSee Local Guide for details.
Ensure the stack is running via Docker, wait 15 seconds, and then run:
python3 integration_test.pyRun unit tests for all services:
./local-test.sh- Docker Deployment Guide
- Local Development Guide
- Contributing Guidelines
- Security Policy
- API Documentation (served by Gateway once running)
- Language: Python 3.12
- Framework: FastAPI
- Database: PostgreSQL
- Messaging: RabbitMQ
- Caching: Redis
- Containerization: Docker & Docker Compose
This project is licensed under the MIT License - see the LICENSE file for details.