Skip to main content

RT Commission Dashboard

Multi-tier Sales & Commission Tracking Dashboard

A high-performance commission dashboard for managing affiliate networks with hierarchical commission structures. Built with NiceGUI and Python.

🚀 Features

  • Multi-tier Commission System: Automatic commission calculation across unlimited hierarchy levels
  • Volume-based Tier Ranking: Dynamic commission rates based on monthly sales performance
  • Admin Panel: User management, financial oversight, and system settings
  • Affiliate Tools: Network tree visualization, commission tracking, and shared sales
  • Dual Backend Support:
    • SQLite: Zero-setup local database (default)
    • Supabase: Cloud PostgreSQL for production deployments
  • Bilingual: Full support for English and Vietnamese (EN/VI)

🛠️ Installation & Usage

Quick Start (Recommended)

Run directly with uvx (no installation needed):

# SQLite (local database)
uvx rt-commission-dashboard --ui --port 8000

# Supabase (cloud database)
uvx rt-commission-dashboard --ui --port 8000 \
  --db-type supabase \
  --supabase-url https://your-project.supabase.co \
  --supabase-anon-key your-anon-key \
  --supabase-service-key your-service-key

For Development

# Clone and install
git clone https://github.com/rtavytran/rt-commission-dashboard.git
cd rt-commission-dashboard
uv sync

# Run locally
uv run rt-commission-dashboard --ui

⚙️ Configuration

Command-Line Arguments

Argument Description Default
--port Port to run the dashboard 8000
--ui Start the web UI -
--db-type Database type: sqlite or supabase sqlite
--supabase-url Supabase project URL -
--supabase-anon-key Supabase anonymous key -
--supabase-service-key Supabase service role key -

Configuration File

Optional: Create config.yaml to customize workspace settings, commission tiers, and application behavior. See config.yaml for the full template.

Admin Settings Page

Administrators can configure database settings through the web UI:

  1. Login as admin (admin@rt.local)
  2. Navigate to Settings in the admin menu
  3. Configure Supabase credentials or switch database types

🔐 Default Login

The dashboard comes with a pre-configured admin account for testing:

  • Email: admin@rt.local
  • Password: Any password (authentication is simplified for Phase 1)

Access the dashboard at http://localhost:8000 after starting the application.

💰 Financial Mechanics

The system implements a configurable Multi-Tier Automatic Commission structure triggered by retail_sales.

Volume-Based Commission Tiers

Commission rates are determined by Total Monthly Sales (Personal + F1).

Monthly Sales Rate
> 0 20%
> 200M 22%
> 400M 25%
> 1B 30%
> 2B 35%

Differential Bonus (Stateful)

The system uses a Stateful Monthly Recalculation model.

  • Step 1: Every retail_sales transaction triggers a recalculation of the user's monthly volume and tier.
  • Step 2: The update propagates up the upline.
  • Step 3: Upline earns the Differential between their Tier Rate and the Downline's Tier Rate.
  • Benefit: Ensures "End-of-Month" consistency in real-time. If a user ranks up late in the month, their commission for the entire month is adjusted.

Note: Commission rates can be customized in config.yaml

Shared Opportunity

  • Mechanism: A sale can be shared between two users (the "Sharer" who brings the opportunity and the "Receiver" who executes the sale).
  • Volume for Tier Ranking: The FULL sales amount counts toward the Sharer's tier ranking. The Receiver gets 0% volume credit for tier ranking.
  • Commission Split: Both parties earn commission on 50% of the sale value using their respective tier rates.
    • Sharer: Commission = (Sharer's Tier Rate) × 50% × Sale Amount
    • Receiver: Commission = (Receiver's Tier Rate) × 50% × Sale Amount

Inactive User Policy

  • Definition: Users with 0 Personal Sales in the current month.
  • Rate: They earn a fixed 4% commission on sales (and 4% receive/share rate) instead of the standard tier rates.
  • Motivation: Encourages active selling to unlock higher tier rates (20%+).

Transaction Types

  • Retail Revenue: Direct sales (Count towards Personal Revenue).
  • Commission: Passive income (Count towards Total Income).
  • Rewards: KPI Bonuses (Manual/Periodical).

📚 Documentation & Resources

🛠️ Development

Setting Up Supabase (Optional)

If you want to use Supabase instead of SQLite:

  1. Create a project at supabase.com
  2. Get your project credentials from SettingsAPI
  3. Run the SQL schema from spec/supabase_schema.sql in the SQL editor
  4. Use the --supabase-* arguments when starting the dashboard

Running Tests

uv run pytest tests/

📦 PyPI Package

Published on PyPI: rt-commission-dashboard

pip install rt-commission-dashboard

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙋 Support


Built with ❤️ by RealTimeX Team

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rt_commission_dashboard-1.2.27.tar.gz (47.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rt_commission_dashboard-1.2.27-py3-none-any.whl (60.1 kB view details)

Uploaded Python 3

File details

Details for the file rt_commission_dashboard-1.2.27.tar.gz.

File metadata

  • Download URL: rt_commission_dashboard-1.2.27.tar.gz
  • Upload date:
  • Size: 47.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for rt_commission_dashboard-1.2.27.tar.gz
Algorithm Hash digest
SHA256 37925541a118a0df67752c6f52569cf51a70fc44e15ade899616a2402e9d1d99
MD5 3bdd217d6cebe1f757f6f253e810f95d
BLAKE2b-256 bc83660ab21fc97050e6680d4356adb1b9126e1c4aaee4f6135300dfa5a3fc11

See more details on using hashes here.

File details

Details for the file rt_commission_dashboard-1.2.27-py3-none-any.whl.

File metadata

File hashes

Hashes for rt_commission_dashboard-1.2.27-py3-none-any.whl
Algorithm Hash digest
SHA256 d9f830ab2e833fe7acb37d619123ace6939d5b8bedd8b3725a3a8d12e312ac47
MD5 9c19105e4eaa61be764b2080ba7eeb8e
BLAKE2b-256 6bba183b9a95664f520ffa4618957b2eb1f6a9d0d7aeb5dc04b08bca1d144c38

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.2.27 This release

2 files

1.2.26

2 files

1.2.25

2 files

1.2.24

2 files

1.2.23

2 files

1.2.22

2 files

1.2.21

2 files

1.2.20

2 files

1.2.19

2 files

1.2.18

2 files

1.2.17

2 files

1.2.16

2 files

1.2.15

2 files

1.2.14

2 files

1.2.13

2 files

1.2.11

2 files

1.2.10

2 files

1.2.8

2 files

1.2.7

2 files

1.2.6

2 files

1.2.5

2 files

1.2.4

2 files

1.2.3

2 files

1.2.2

2 files

1.2.1

2 files

1.2.0

2 files

1.1.24

2 files

1.1.23

2 files

1.1.22

2 files

1.1.21

1 file

1.1.20

2 files

1.1.19

2 files

1.1.18

2 files

1.1.17

2 files

1.1.16

2 files

1.1.15

2 files

1.1.14

2 files

1.1.13

2 files

1.1.12

2 files

1.1.11

2 files

1.1.10

2 files

1.1.9

2 files

1.1.8

2 files

1.1.7

2 files

1.1.6

2 files

1.1.5

2 files

1.1.4

2 files

1.1.3

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page