Bravura Admin Pro - Customer Guide

Back to Documentation Hub

Bravura Admin Pro - Customer Guide

Version 1.1.0

Copyright Β© 2025 Wigley Studios LLC

Welcome to Bravura Admin Pro! This guide will help you get started with your production-ready licensing infrastructure.

---

πŸŽ‰ What You've Purchased

Bravura Admin Pro is a complete, production-ready licensing infrastructure that includes:

βœ… Beautiful Admin Panel - Manage licenses, customers, and subscriptions

βœ… Customer Self-Service Portal - Let customers manage their own licenses

βœ… Stripe Integration - Accept payments and manage subscriptions

βœ… Email Automation - Automatic license delivery and notifications

βœ… System Health Monitoring - Real-time diagnostics and performance tracking

βœ… Audit Logging - Complete activity tracking for compliance

βœ… Version Management - Control software releases and downloads

This is not a framework or libraryβ€”it's a complete web application ready to deploy.

---

πŸ“¦ What's Included

Your purchase includes:


bravura-admin-pro/
β”œβ”€β”€ admin_panel/          # Admin dashboard (web interface)
β”œβ”€β”€ core/                 # Core business logic
β”‚   β”œβ”€β”€ auth.py          # Authentication & JWT
β”‚   β”œβ”€β”€ database.py      # Database connection
β”‚   β”œβ”€β”€ email_service.py # Email automation
β”‚   β”œβ”€β”€ licensing_service.py # License management
β”‚   β”œβ”€β”€ models.py        # Database models
β”‚   └── schemas.py       # API schemas
β”œβ”€β”€ database/
β”‚   └── migrations/      # Database setup scripts
β”œβ”€β”€ deployment/          # Server configuration files
β”œβ”€β”€ docs/                # This documentation
β”œβ”€β”€ examples/            # Sample configuration
β”œβ”€β”€ main.py              # Application entry point
β”œβ”€β”€ requirements.txt     # Python dependencies
β”œβ”€β”€ .env.example         # Configuration template
└── README.md            # Quick reference

---

πŸš€ Quick Start (15 Minutes)

Step 1: Install Dependencies


# Navigate to your Bravura Admin Pro directory
cd bravura-admin-pro

# Install Python dependencies
pip install -r requirements.txt

Step 2: Setup Database


# Login to MySQL
mysql -u root -p

# Run the setup script
source database/migrations/001_initial_schema.sql
source database/migrations/002_add_license_types.sql
# ... (run all migration files in order)

Or use the consolidated setup script:


mysql -u root -p < database/migrations/complete_setup.sql

Step 3: Configure Environment


# Copy the example environment file
cp .env.example .env

# Edit with your settings
nano .env

Required Configuration:


# Database
DB_HOST=localhost
DB_NAME=bravura_licensing
DB_USER=bravura_api
DB_PASSWORD=your_secure_password_here

# JWT Secret (generate with: python -c "import secrets; print(secrets.token_hex(32))")
JWT_SECRET_KEY=your_secret_key_here

# Admin Password (generate hash with: python -c "import bcrypt; print(bcrypt.hashpw(b'your_password', bcrypt.gensalt()).decode())")
ADMIN_PASS=$2b$12$...

# Stripe
STRIPE_SECRET_KEY=sk_live_...
STRIPE_WEBHOOK_SECRET=whsec_...
STRIPE_PUBLISHABLE_KEY=pk_live_...

# Email
EMAIL_HOST=smtp.yourprovider.com
EMAIL_PORT=587
EMAIL_USER=noreply@yourdomain.com
EMAIL_PASSWORD=your_email_password
EMAIL_FROM=noreply@yourdomain.com

Step 4: Run the Application


# Development mode (testing)
python main.py

# Production mode (see deployment docs)
gunicorn main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker

Step 5: Access the Admin Panel

  1. Open your browser to http://localhost:8000/admin/login
  2. Login with username admin and the password you set in .env
  3. Start managing licenses!

---

πŸ’³ Stripe Setup

Create Products & Prices

  1. Log into Stripe Dashboard
  2. Create Products:

- Standard Edition

- Professional Edition

- Enterprise Edition

  1. Create Prices for each product:

- One-time payment (perpetual)

- Monthly subscription (optional)

- Annual subscription (optional)

  1. Copy Price IDs and add them to your .env:

# Perpetual License Price IDs
STRIPE_PRICE_STANDARD_PERPETUAL=price_xxx
STRIPE_PRICE_PROFESSIONAL_PERPETUAL=price_xxx
STRIPE_PRICE_ENTERPRISE_PERPETUAL=price_xxx

# Monthly Subscription Price IDs
STRIPE_PRICE_STANDARD_MONTHLY=price_xxx
STRIPE_PRICE_PROFESSIONAL_MONTHLY=price_xxx
STRIPE_PRICE_ENTERPRISE_MONTHLY=price_xxx

# Annual Subscription Price IDs
STRIPE_PRICE_STANDARD_ANNUAL=price_xxx
STRIPE_PRICE_PROFESSIONAL_ANNUAL=price_xxx
STRIPE_PRICE_ENTERPRISE_ANNUAL=price_xxx

Configure Webhooks

  1. In Stripe Dashboard, go to Developers β†’ Webhooks
  2. Add endpoint: https://yourdomain.com/api/webhooks/stripe
  3. Select events:

- payment_intent.succeeded

- charge.refunded

- customer.subscription.created

- customer.subscription.updated

- customer.subscription.deleted

- invoice.payment_succeeded

- invoice.payment_failed

  1. Copy webhook secret to .env:

STRIPE_WEBHOOK_SECRET=whsec_...

---

🎨 Customization

Branding (Professional & Enterprise Only)

Edit core/config_base.py:


# Application Branding
app_name: str = "Your App Name"
company_name: str = "Your Company"
logo_url: str = "/static/logo.png"

# Colors (hex codes)
primary_color: str = "#2c3e50"
secondary_color: str = "#0d6efd"
accent_color: str = "#20C6B7"

Email Templates

Email templates are in core/email_service.py. You can customize:

License Tiers

Define your tiers in core/config_base.py:


tier_names: dict = {
    "STANDARD": "Starter",
    "PROFESSIONAL": "Professional",
    "ENTERPRISE": "Enterprise"
}

tier_max_activations: dict = {
    "STANDARD": 1,
    "PROFESSIONAL": 5,
    "ENTERPRISE": -1  # unlimited
}

---

πŸ“Š Using the Admin Panel

Dashboard Overview

The dashboard shows:

Managing Licenses

View Licenses: /admin/licenses

Create License: Click "Create License"

Edit License: Click "Edit" on any license

Revoke License: Click "Revoke"

Resend Email: Click "Resend Email"

Managing Customers

View Customers: /admin/customers

Customer Details: Click on any customer

Viewing Audit Logs

Audit Logs: /admin/logs

System Health

Health Dashboard: /admin/health

Version Management

Versions: /admin/versions

---

πŸ‘₯ Customer Portal

Your customers can access their portal at: https://yourdomain.com/subscription-portal

Portal Features

Login Options:

Self-Service:

Password Setup

Customers receive a password setup link in their welcome email. They can also:

---

πŸ” Security Best Practices

Production Deployment

  1. Use HTTPS: SSL/TLS certificates required
  2. Strong Passwords: Use long, random passwords
  3. Secure JWT Secret: Generate with secrets.token_hex(32)
  4. Database Security: Limit database user permissions
  5. IP Whitelisting: Restrict admin panel access (optional)
  6. Regular Backups: Automate database backups
  7. Update Dependencies: Keep Python packages updated

Recommended Security Settings


# Security
HASH_ROUNDS=12  # bcrypt rounds
MAX_LOGIN_ATTEMPTS=5
LOCKOUT_DURATION_MINUTES=30

# CORS (adjust for your domains)
ALLOWED_ORIGINS=https://yourdomain.com,https://www.yourdomain.com

# Rate Limiting
API_RATE_PER_MIN=60
API_RATE_BURST=10

---

πŸš€ Production Deployment

Server Requirements

Deployment Steps

  1. Setup Server:

# Update system
sudo apt update && sudo apt upgrade -y

# Install dependencies
sudo apt install python3.10 python3-pip mysql-server nginx certbot -y
  1. Configure Nginx:

# Copy nginx configuration
sudo cp deployment/nginx_template.conf /etc/nginx/sites-available/bravura
sudo ln -s /etc/nginx/sites-available/bravura /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
  1. Setup Systemd Service:

# Copy service file
sudo cp deployment/systemd_template.service /etc/systemd/system/bravura.service
sudo systemctl enable bravura
sudo systemctl start bravura
  1. Setup SSL:

# Get Let's Encrypt certificate
sudo certbot --nginx -d yourdomain.com
  1. Configure Firewall:

sudo ufw allow 'Nginx Full'
sudo ufw enable

Complete deployment instructions: See INSTALLATION_GUIDE.md

---

πŸ†˜ Troubleshooting

Common Issues

Database Connection Errors


Error: Can't connect to MySQL server

Solution: Check database credentials in .env and ensure MySQL is running

Stripe Webhook Failures


Error: Webhook signature verification failed

Solution: Verify STRIPE_WEBHOOK_SECRET matches Stripe dashboard

Email Not Sending


Error: SMTP authentication failed

Solution: Check email credentials and ensure SMTP port is correct

License Validation Fails


Error: Invalid license key

Solution: Check license status in admin panel, verify database connection

Debug Mode

Enable debug mode for detailed error messages:


DEBUG=true
ENVIRONMENT=development

⚠️ Never enable debug mode in production!

Logs

Check application logs:


# View real-time logs
tail -f /opt/bravura/logs/api.log

# View systemd service logs
sudo journalctl -u bravura -f

---

πŸ“š Additional Resources

Documentation Files

Support

Your License

Product: Bravura Admin Pro

Tier: [Your Tier - Starter/Professional/Enterprise]

License Key: [Your License Key]

Support Period: [Your Support Period]

---

βœ… Getting Help

Before Contacting Support

  1. Check this documentation
  2. Review the FAQ in INSTALLATION_GUIDE.md
  3. Check application logs for error messages
  4. Verify your configuration in .env

When Contacting Support

Please provide:

Support Response Times

---

🎯 Next Steps

Now that you have Admin Pro installed:

  1. βœ… Test License Creation - Create a test license and verify it works
  2. βœ… Test Stripe Integration - Process a test payment
  3. βœ… Test Customer Portal - Login as a customer
  4. βœ… Configure Email - Send test emails
  5. βœ… Customize Branding - Add your logo and colors
  6. βœ… Deploy to Production - Follow deployment guide
  7. βœ… Go Live! - Start selling your software

---

Congratulations on your purchase of Bravura Admin Pro!

We're excited to see what you build with it. If you have any questions or need help, don't hesitate to reach out to our support team.

Happy Building!

The Wigley Studios Team

---

Bravura Admin Pro v1.0.0

Copyright Β© 2025 Wigley Studios LLC. All rights reserved.