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
βββ 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) and Grafana (visualization)
βββ 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.sh
Both install dependencies and start the dev server.
This script will:
- Install Poetry (if not already installed)
- Set up necessary
PATH
variables - Install project dependencies
- Start the development server with hot-reload
Using Docker Compose:
docker compose up -d
Or with Make:
make up
To view logs from all services:
docker compose logs -f
To 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/dev.Dockerfile .
# 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:latest
poetry install
poetry run uvicorn app:app --reload
You can seed initial development data using one of the following commands:
./scripts/seed_data.sh
Or with Make:
make seed
This populates the database with test data for local development and testing.
Run tests with pytest
:
# Using poetry
poetry run pytest
# Or with Make
make test
We 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-files
Or use Make:
make lint # Run Ruff linting
make format # Format code using Ruff
RedisInsight is available via Docker at: π http://localhost:5540
To connect:
-
Click Add Redis database
-
Use one of the following connection strings:
redis://localhost:6379
redis://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