Payzee is a modern payment processor powered by Central Bank Digital Currency (CBDC) — also known as the Digital Rupee or e-rupee (e₹). [ YouTube Demo ]
- 💻 T3-stack Website: Live | Source Code
- 📱 Flutter App: Live | Source Code
├── app.py # Main FastAPI application entry point
├── .devcontainer/ # Development container configuration
├── .github/ # GitHub workflows and configuration
├── data/ # External datasets and reference information
├── db/ # Redis database configuration and operations
├── docker/ # Docker configuration files
├── k8s/ # Kubernetes configuration files
├── docs/ # Documentation files
├── middleware/ # Request/response middleware components
├── models/ # Data models for transactions, users, and payment entities
├── monitoring/ # Application Performance Monitoring with Prometheus (metrics collection), Grafana (visualization), and AlertManager (alerting)
├── routes/ # API endpoints for payments and authentication
├── scripts/ # Development and setup scripts
├── templates/ # HTML templates for the application
├── tests/ # Unit and integration tests
└── utils/ # Helper utilities and common functions
- Python 3.11+
- Redis server
- Poetry for dependency management
Run the setup script:
# Option 1: Remote (no clone needed)
sudo bash -c "$(curl -fsSL https://areebahmeddd.github.io/payzee/install.sh)"
# Option 2: Local (after cloning)
./scripts/install.shBoth install dependencies and start the dev server.
This script will:
- Install Poetry (if not already installed)
- Set up necessary
PATHvariables - Install project dependencies
- Start the development server with hot-reload
Using Docker Compose:
docker compose -f docker-compose.local.yaml up -dOr with Make:
make upTo view logs from all services:
docker compose logs -fTo view logs for a specific service (e.g., api):
docker compose logs -f api# Build the API container
docker build -t payzee-api -f docker/Dockerfile.dev .
# Run the API container
docker run -p 8000:8000 --env-file .env payzee-api-
Windows:
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py - -
Linux/macOS:
curl -sSL https://install.python-poetry.org | python3 -
docker run --name payzee-redis -p 6379:6379 -d redis:latestpoetry installpoetry run uvicorn app:app --reloadYou can seed initial development data using one of the following commands:
./scripts/seed_data.shOr with Make:
make seedThis populates the database with test data for local development and testing.
Run tests with pytest:
# Using poetry
poetry run pytest
# Or with Make
make testWe use pre-commit hooks with Ruff for linting and formatting. (Installed with project dependencies)
Hooks handle:
- Removing trailing whitespace
- Ensuring files end with a newline
- Checking JSON/YAML syntax
- Python linting & formatting with Ruff
To run all hooks manually:
poetry run pre-commit run --all-filesOr use Make:
make lint # Run Ruff linting
make format # Format code using RuffRedisInsight is available via Docker at: 👉 http://localhost:5540
To connect:
-
Click Add Redis database
-
Use one of the following connection strings:
redis://localhost:6379redis://host.docker.internal:6379
This allows inspection of Redis data and keyspaces.
Once the app is running, open Swagger UI at: 👉 http://localhost:8000/docs