Skip to main content
Partners manage events, clients, branding, and finances through a comprehensive dashboard designed for photo booth businesses.

Dashboard Access

Partners access their dashboard at:
https://cabina.creativa.lab/dashboard.html
Requires role: 'partner' or is_master: true in user profile.

Overview Section

Key Metrics

Total Events

Active and completed events count

Total Clients

Managed client accounts

Credit Balance

Available credits for events

This Month Generations

AI photos created in current month

Total Revenue

Lifetime earnings (future)

Active Events Today

Currently running events

Quick Actions

1

Create Event

Launch new photo booth event with one click
2

Add Client

Invite new client account to platform
3

View Reports

Access detailed analytics and downloads

Events Management

Event List View

All partner events displayed with:
  • Event name and slug
  • Credit usage: 47/100 (used/allocated)
  • Generation count
  • Status badge (Active/Ended/Upcoming)
  • Quick actions: Edit, QR Code, Gallery, Delete

Event Actions

Modify event settings:
  • Name and slug
  • Selected AI styles
  • Branding (logo, color)
  • Start/end dates
  • Welcome text

Event Creation Workflow

1

Click Create Event

Open event creation modal from events section
2

Basic Information

  • Event name (e.g., “Boda de Ana y Juan”)
  • Auto-generated slug
  • Credit allocation (deducted from partner balance)
3

Dates (Optional)

  • Start date with time
  • End date with time
  • Toggle pre-event welcome screen
4

Select Styles

Choose AI styles available to guests:
  • Browse by category
  • Search by name
  • Select all or individual styles
5

Branding

  • Upload event logo
  • Set primary color
  • Write welcome message
6

Create & Share

Event created instantly with unique link and QR code

Clients Management

Client Accounts

Partners can create and manage client accounts for:
  • Recurring event customers
  • Prepaid credit allocations
  • Branded sub-accounts
  • White-label experiences

Creating Clients

full_name
string
required
Client’s business or personal name
email
string
required
Client login email (invitation sent)
initial_credits
number
default:"0"
Starting credit balance
partner_id
string
Automatically linked to creating partner
const handleCreateClient = async (clientData) => {
  // Create auth user
  const { data: authData } = await supabase.auth.admin.createUser({
    email: clientData.email,
    email_confirm: true
  });
  
  // Create profile
  await supabase.from('profiles').insert({
    id: authData.user.id,
    full_name: clientData.full_name,
    email: clientData.email,
    credits: clientData.initial_credits,
    role: 'client',
    partner_id: partnerId
  });
  
  // Send invitation email
  await supabase.functions.invoke('send-invitation', {
    email: clientData.email,
    partner_name: partner.company_name
  });
};

Client Top-Up

Transfer credits from partner to client:
1

Select Client

Click top-up icon on client row
2

Enter Amount

Specify credits to transfer (1-10000)
3

Confirm Transfer

Credits deducted from partner, added to client atomically
4

Transaction Logged

Recorded in transactions table for audit trail

Branding Panel

Configure default branding for all partner events:

Logo Management

Upload partner logo to Supabase Storage:
const handleLogoUpload = async (file) => {
  const fileName = `partner-logos/${partnerId}/${Date.now()}-${file.name}`;
  
  const { data, error } = await supabase.storage
    .from('public-assets')
    .upload(fileName, file);
  
  const publicURL = supabase.storage
    .from('public-assets')
    .getPublicUrl(data.path).data.publicUrl;
  
  await updateBranding({ logo_url: publicURL });
};

Color Theming

Set default primary color:
config: {
  primary_color: "#7f13ec"  // Hex color code
}
Affects all partner events unless overridden per-event:
  • Button backgrounds
  • Accent highlights
  • Progress bars
  • Link colors
  • Glow effects

Style Presets

Choose default AI styles for events:
  • Quick-select favorite styles
  • Create style “packages” (e.g., “Wedding Pack”)
  • Apply to new events automatically

Wallet Section

Credit Balance

Current available credits for:
  • Creating new events
  • Topping up existing events
  • Allocating to clients

Transaction History

Credits bought from platform:
  • Date & time
  • Amount
  • Payment method
  • Invoice number

Credit Purchase

Credit purchases are currently manual. Contact platform admin to purchase credits.
Future: Automated payment integration
const handlePurchaseCredits = async (amount, paymentMethod) => {
  const { data } = await supabase.functions.invoke('mercadopago-payment', {
    body: {
      partner_id: partnerId,
      credits: amount,
      price: calculatePrice(amount),
      redirect_url: `${window.location.origin}/dashboard.html`
    }
  });
  
  // Redirect to payment gateway
  window.location.href = data.init_point;
};

Analytics & Reports

Event Performance

Per-event metrics:
  • Total generations
  • Credit efficiency (generations per credit)
  • Peak usage times
  • Most popular styles
  • Average session duration

Style Popularity

Ranking of AI styles by:
  • Total usage count
  • Guest preferences
  • Conversion rate

Export Options

CSV Export

Download event data as spreadsheet

Photo ZIP

Bulk download all event photos

QR Codes

Print-ready QR code sheets

Reports PDF

Formatted analytics report

Real-Time Updates

Dashboard data syncs in real-time:
const channel = supabase
  .channel(`partner_${partnerId}`)
  .on('postgres_changes', {
    event: '*',
    schema: 'public',
    table: 'events',
    filter: `partner_id=eq.${partnerId}`
  }, (payload) => {
    // Update events list
    fetchPartnerData();
  })
  .subscribe();
Updates include:
  • New generations in events
  • Credit balance changes
  • Client registrations
  • Event modifications

Build docs developers (and LLMs) love