Multi-tier sales & commission tracking dashboard with hierarchical affiliate networks
Project description
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:
- Login as admin (
admin@rt.local) - Navigate to Settings in the admin menu
- 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_salestransaction 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
- CHANGELOG.md: Version history and release notes
- spec/dashboard_spec.md: Full architecture and system requirements
- User Guides:
🛠️ Development
Setting Up Supabase (Optional)
If you want to use Supabase instead of SQLite:
- Create a project at supabase.com
- Get your project credentials from Settings → API
- Run the SQL schema from
spec/supabase_schema.sqlin the SQL editor - 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
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Built with ❤️ by RealTimeX Team
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rt_commission_dashboard-1.1.9.tar.gz.
File metadata
- Download URL: rt_commission_dashboard-1.1.9.tar.gz
- Upload date:
- Size: 36.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32bcb822130b702b1fe11cfb8fcaa9ab9c99988f7fac2a778cf7fc7d5966459e
|
|
| MD5 |
86b00845491dcaa757a5eb9ee83fda49
|
|
| BLAKE2b-256 |
e1ff1f459ab5036e2e5f30bdd89ab2d6c2e955dffd6c9090a129ab1b245e76b0
|
File details
Details for the file rt_commission_dashboard-1.1.9-py3-none-any.whl.
File metadata
- Download URL: rt_commission_dashboard-1.1.9-py3-none-any.whl
- Upload date:
- Size: 45.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7eccc6fff7b5bd451e0011719176d2b65718a65353f260e70a43cfaa9779ead0
|
|
| MD5 |
3d575a4f89eeae07fa6b638d716ac203
|
|
| BLAKE2b-256 |
cef433925ba0ba7dcbfeee99b951e6cf7aa0f3cd86338f4db6d5c906b2ad88ee
|