Skip to main content
The Master Dashboard provides platform administrators complete control over partners, users, styles, and system-wide analytics.

Accessing Admin Panel

Master users access the admin dashboard via:
https://cabina.creativa.lab/dashboard.html
Only users with is_master: true or role: 'admin' can access the Master Dashboard.

Dashboard Views

Overview

Platform-wide statistics at a glance:

Total Partners

Active and pending partners count

B2C Users

Individual consumer accounts

Total Generations

Platform-wide AI photo count

Credits in Circulation

Sum of all partner + user balances

Revenue (MTD)

Month-to-date earnings

Active Events

Currently running events

Recent Activity

Real-time platform activity log:
const recentLogs = await supabase
  .from('admin_logs')
  .select('*')
  .order('created_at', { ascending: false })
  .limit(20);
Log entries include:
  • Partner creations/approvals
  • Credit top-ups
  • Event creations
  • User registrations
  • Style modifications
  • System errors

Partner Management

Partners Section

List of approved partners:
  • Company name
  • Contact email
  • Credit balance
  • Total events
  • Monthly revenue
  • Action buttons (Top-Up, Edit, Deactivate)

Creating Partners

1

Click Create Partner

Open partner creation modal
2

Enter Business Details

  • Company name
  • Contact name
  • Email address
  • Phone number
  • Tax ID (optional)
3

Allocate Credits

Set initial credit balance
4

Set Commission Rate

Default: 30% platform commission
5

Configure Branding

Optional: Set default primary color

Partner Top-Up

Add credits to partner accounts:
const handleTopUpPartner = async (partnerId, amount) => {
  const { error } = await supabase.rpc('partner_credit_topup', {
    p_partner_id: partnerId,
    p_credits: amount,
    p_admin_id: user.id
  });
  
  // Log transaction
  await supabase.from('transactions').insert({
    partner_id: partnerId,
    amount: amount,
    type: 'credit_purchase',
    admin_id: user.id
  });
};
Credit top-ups are irreversible. Double-check amounts before confirming.

B2C User Management

Manage individual consumer accounts:

User List Features

  • Search: By name, email, or ID
  • Filter: By credit balance, generation count, signup date
  • Sort: By any column
  • Bulk Actions: Credit top-ups, role changes

User Details Modal

full_name
string
User’s display name
email
string
Account email (readonly)
credits
number
Current credit balance
total_generations
number
Lifetime generation count
role
enum
Options: user, partner, admin, master
unlocked_packs
array
Premium style packs purchased

Credit Management

Add or deduct user credits:
const handleUserTopUp = async (userId, amount) => {
  const { error } = await supabase
    .from('profiles')
    .update({ 
      credits: supabase.raw(`credits + ${amount}`) 
    })
    .eq('id', userId);
};

Style Manager

Global Style Controls

Toggle Visibility

Show/hide styles platform-wide

Premium Status

Mark styles as premium or free

Upload Custom Styles

Add new AI model styles

Usage Analytics

View popularity statistics

Style Metadata Editor

interface StyleMetadata {
  id: string;              // Style identifier
  label: string;           // Display name
  image_url: string;       // Preview image
  category: string;        // Main category
  subcategory: string;     // Subcategory/pack name
  is_premium: boolean;     // Premium flag
  is_active: boolean;      // Visibility toggle
  usage_count: number;     // Total generations
  tags: string[];          // Search tags
}

Hierarchical Overrides

Style visibility follows inheritance:
  1. Category Level: Hide entire category (e.g., all “Sports”)
  2. Subcategory Level: Hide pack (e.g., “Peaky Blinders”)
  3. Individual Level: Hide specific style (e.g., “Thomas Shelby”)
// Category override
if (catMeta && catMeta.is_active === false) isActive = false;

// Subcategory override
if (subCatMeta && subCatMeta.is_active === false) isActive = false;

// Individual override
if (individualMeta && individualMeta.is_active === false) isActive = false;

Admin Logs

Comprehensive audit trail:
  • Partner creation/modification
  • Credit top-ups
  • Style changes
  • User role changes
  • Event approvals
  • System errors

Analytics & Reporting

Platform Metrics

const stats = {
  totalPartners: partners.length,
  totalB2CUsers: b2cUsers.length,
  totalGenerations: generations.count,
  creditsInCirculation: sumCredits(partners) + sumCredits(users),
  activeEvents: events.filter(e => e.is_active).length,
  monthlyRevenue: calculateRevenue(transactions, 'month')
};

Partner Statistics

Per-partner breakdown:
  • Total events created
  • Credits purchased
  • Credits used
  • Generation count
  • Revenue generated
  • Average event size

B2C Statistics

Consumer metrics:
  • New signups (daily/weekly/monthly)
  • Credit pack purchases
  • Premium pack unlocks
  • Average generations per user
  • Retention rate

System Settings

System-wide settings affect all users and events. Changes take effect immediately.

Global Configurations

free_user_credits
number
default:"500"
Initial credits for new B2C users
generation_cost
number
default:"100"
Credits per AI generation
premium_pack_price
number
default:"3000"
Credits to unlock premium style packs
daily_generation_limit
number
default:"2"
Max generations per user per day
commission_rate
number
default:"0.30"
Platform commission on partner sales (30%)

Build docs developers (and LLMs) love