- Add comprehensive analytics components with export functionality - Implement territory management with manager performance tracking - Add seatmap components for venue layout management - Create customer management features with modal interface - Add advanced hooks for dashboard flags and territory data - Implement seat selection and venue management utilities - Add type definitions for ticketing and seatmap systems 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
17 KiB
Enterprise Features Roadmap
Overview
This document outlines the comprehensive enterprise features planned for the Black Canyon Tickets whitelabel platform. These features transform the basic ticketing system into a full-scale, multi-tenant enterprise solution with territory management, custom branding, and advanced payment processing.
Core Flows / Modals
Event Creation Wizard (Multi-Step)
Purpose: Streamlined event creation process with validation and guided setup
Flow Structure:
- Event Details → Basic information (title, description, date, venue)
- Ticket Configuration → Pricing tiers, inventory limits, presale settings
- Publish Settings → Review and publish event
Components to Build:
EventCreationWizard.tsx- Main wizard container with step navigationEventDetailsStep.tsx- Basic event information formTicketConfigurationStep.tsx- Ticket type management interfacePublishStep.tsx- Final review and publication controlsWizardNavigation.tsx- Step indicator and navigation controls
Mock Data Integration:
interface EventWizardState {
currentStep: 1 | 2 | 3;
eventDetails: Partial<Event>;
ticketTypes: Partial<TicketType>[];
publishSettings: {
goLiveImmediately: boolean;
scheduledPublishTime?: string;
};
}
Ticket Type Modal
Purpose: Comprehensive ticket configuration with pricing, inventory, and fee structure
Features:
- Pricing Configuration: Base price, service fees, taxes
- Inventory Management: Total quantity, sold count, reserved count
- Sale Windows: Presale periods, general sale start/end
- Access Restrictions: Presale codes, member-only tickets
- Fee Structure: Platform fees, payment processing fees
Components:
TicketTypeModal.tsx- Main modal containerPricingSection.tsx- Price and fee configurationInventorySection.tsx- Quantity and availability settingsSaleWindowsSection.tsx- Time-based availability controlsFeeBreakdownPreview.tsx- Real-time fee calculation display
Refund / Void Ticket Flow
Purpose: Administrative controls for refunding or voiding tickets
Flow Options:
- Full Refund: Return money and cancel ticket
- Partial Refund: Return portion of payment
- Void Ticket: Cancel without refund (comps, internal use)
- Transfer: Move ticket to different customer
Components:
RefundModal.tsx- Main refund interfaceRefundReasonSelector.tsx- Dropdown for refund reasonsRefundCalculator.tsx- Fee calculation and breakdownRefundConfirmation.tsx- Final confirmation step
Organizer Invite Modal
Purpose: Invite new organizers to the platform with role assignment
Features:
- Contact Information: Email, name, organization
- Role Assignment: Admin, Manager, Staff permissions
- Territory Assignment: Geographic regions if applicable
- Welcome Message: Custom invitation message
Components:
OrganizerInviteModal.tsx- Main invitation interfaceRoleSelector.tsx- Permission level selectionTerritorySelector.tsx- Geographic assignment (if enabled)InvitationPreview.tsx- Email preview before sending
Payment Connection Modal (Square OAuth)
Purpose: Connect organizer payment accounts for direct payouts
Features:
- OAuth Integration: Simulated Square Connect flow
- Account Verification: Business information validation
- Fee Structure: Platform fee configuration
- Payout Settings: Schedule and method preferences
Components:
PaymentConnectionModal.tsx- Main connection interfaceSquareOAuthButton.tsx- OAuth initiation buttonAccountVerificationForm.tsx- Business details formPayoutSettingsForm.tsx- Payout configuration
Territory Management System
Role Hierarchy
Purpose: Multi-level administrative structure for large organizations
Role Structure:
- Super Admin: Platform-wide access, system configuration
- Organization Admin: Full organization access, user management
- Territory Manager: Regional access, event oversight within territory
- Staff: Limited access, event-specific permissions
Permission Matrix:
interface PermissionMatrix {
superAdmin: {
events: ['create', 'read', 'update', 'delete', 'all_orgs'];
users: ['create', 'read', 'update', 'delete', 'all_orgs'];
territories: ['create', 'read', 'update', 'delete'];
analytics: ['global', 'cross_org'];
};
orgAdmin: {
events: ['create', 'read', 'update', 'delete', 'org_only'];
users: ['create', 'read', 'update', 'delete', 'org_only'];
territories: ['read', 'assign_users'];
analytics: ['org_only'];
};
territoryManager: {
events: ['create', 'read', 'update', 'territory_only'];
users: ['read', 'territory_only'];
territories: ['read', 'own_territory'];
analytics: ['territory_only'];
};
staff: {
events: ['read', 'assigned_only'];
users: ['read', 'own_profile'];
territories: [];
analytics: ['event_specific'];
};
}
Territory Assignments
Purpose: Geographic or organizational segmentation for large enterprises
Territory Model:
interface Territory {
id: string;
name: string;
description?: string;
type: 'geographic' | 'department' | 'venue' | 'custom';
bounds?: {
states?: string[];
cities?: string[];
zipCodes?: string[];
venues?: string[];
};
managers: string[]; // User IDs
staff: string[]; // User IDs
isActive: boolean;
}
Features:
- Geographic Boundaries: State, city, or zip code based
- Venue-Based: Specific venue assignments
- Department-Based: Organizational unit assignments
- Custom Boundaries: Flexible territory definitions
View Filtering by Territory
Purpose: Automatic data filtering based on user's territory access
Implementation Pattern:
// Territory-aware data hooks
const useEvents = () => {
const { user } = useAuth();
const userTerritories = user.territoryIds;
return useMockQuery(['events'], () => {
return mockEvents.filter(event => {
if (user.role === 'superAdmin') return true;
if (user.role === 'orgAdmin') return event.organizationId === user.organizationId;
return userTerritories.some(territoryId =>
event.territoryIds?.includes(territoryId)
);
});
});
};
Admin UI for Territory Management
Components:
TerritoryDashboard.tsx- Overview of all territoriesTerritoryCreationForm.tsx- Create new territoryTerritoryEditor.tsx- Edit existing territoryUserTerritoryAssignments.tsx- Assign users to territoriesTerritoryBoundaryMap.tsx- Visual territory boundaries (if geographic)
Whitelabel Features
Payment Integration (Square OAuth Flow)
Purpose: Per-organizer payment processing with platform fee splits
OAuth Simulation Flow:
- Initiate Connection: Organizer clicks "Connect Square"
- Mock OAuth Redirect: Simulate Square authorization page
- Token Exchange: Mock server-side token handling
- Account Verification: Store connection status
- Fee Configuration: Set platform fee percentage
Security Considerations (for real implementation):
- Store OAuth tokens in secure backend (not Firestore)
- Use encryption for sensitive payment data
- Implement token refresh mechanisms
- Audit trail for all payment operations
Mock Implementation:
interface SquareConnection {
organizationId: string;
squareApplicationId: string; // Mock ID
merchantId: string; // Mock merchant ID
connectionStatus: 'connected' | 'pending' | 'error';
connectedAt: string;
lastSync: string;
capabilities: string[]; // e.g., ['payments', 'customers']
}
Per-Organization Branding
Purpose: Custom branded experience for each organization
Branding Elements:
- Logo: Header logo, favicon, email signatures
- Theme Colors: Primary, secondary, accent colors
- Typography: Custom font selections
- Email Templates: Branded transactional emails
- Checkout Page: Custom styling for ticket sales
Theme System Integration:
interface OrganizationTheme {
id: string;
organizationId: string;
branding: {
logoUrl?: string;
faviconUrl?: string;
colors: {
primary: string;
secondary: string;
accent: string;
background: string;
text: string;
};
typography: {
headingFont: string;
bodyFont: string;
};
};
customCss?: string; // Advanced customization
isActive: boolean;
}
Components:
BrandingEditor.tsx- Theme customization interfaceLogoUploader.tsx- Image upload and croppingColorPicker.tsx- Brand color selectionThemePreview.tsx- Live preview of changesBrandingTemplates.tsx- Pre-built theme options
Domain Mapping
Purpose: Custom domains for organization-specific ticket sales
Domain Structure:
- Pattern:
tickets.orgname.com→ Organization checkout - Fallback:
portal.blackcanyontickets.com/org/orgname - SSL: Automatic certificate management
- Routing: Domain-based organization resolution
Technical Implementation (mock):
interface DomainMapping {
id: string;
organizationId: string;
domain: string; // e.g., "tickets.venue-name.com"
subdomain?: string; // e.g., "venue-name" for venue-name.blackcanyontickets.com
sslStatus: 'active' | 'pending' | 'error';
dnsStatus: 'configured' | 'pending' | 'error';
verifiedAt?: string;
isActive: boolean;
}
Development Sequencing
Sprint 1: Event & Ticket Creation Modals (2-3 weeks)
Goal: Complete the core event and ticket management flows
Deliverables:
- ✅ Event creation wizard (3-step flow)
- ✅ Ticket type modal with pricing and inventory
- ✅ Form validation and error handling
- ✅ Integration with existing mock data stores
- ✅ Responsive design for mobile/desktop
- ✅ Playwright tests for critical flows
Success Criteria:
- Users can create events through guided wizard
- Ticket types can be configured with all pricing options
- All forms validate properly and show helpful errors
- Mobile experience is fully functional
Sprint 2: Role & Territory System (2-3 weeks)
Goal: Implement hierarchical permissions and geographic segmentation
Deliverables:
- ✅ Role-based permission system
- ✅ Territory creation and management UI
- ✅ User assignment to territories
- ✅ Territory-based data filtering
- ✅ Admin interface for territory management
- ✅ Permission enforcement throughout app
Success Criteria:
- Different user roles see appropriate data
- Territory managers only access their regions
- Admin can create and manage territories
- All views respect territory boundaries
Sprint 3: Payment Integration Simulation (2 weeks)
Goal: Mock Square OAuth flow and payment processing
Deliverables:
- ✅ Square OAuth connection simulation
- ✅ Payment account verification flow
- ✅ Platform fee configuration
- ✅ Payout settings and schedules
- ✅ Connection status monitoring
- ✅ Error handling for payment issues
Success Criteria:
- Organizers can "connect" Square accounts
- Platform fees are calculated correctly
- Payment connection status is tracked
- Error scenarios are handled gracefully
Sprint 4: Whitelabel Branding System (2-3 weeks)
Goal: Per-organization theme customization and domain mapping
Deliverables:
- ✅ Theme editor with live preview
- ✅ Logo and image upload system
- ✅ Custom color scheme configuration
- ✅ Email template customization
- ✅ Domain mapping simulation
- ✅ Theme persistence and loading
Success Criteria:
- Organizations can customize their branding
- Theme changes reflect in real-time
- Custom domains route to correct organization
- Branded emails are generated correctly
Sprint 5: Polish & Analytics (2-3 weeks)
Goal: Sales dashboard improvements and comprehensive testing
Deliverables:
- ✅ Enhanced sales day dashboard
- ✅ Real-time analytics with territory filtering
- ✅ Advanced scanning flow for door staff
- ✅ Performance optimization
- ✅ Comprehensive testing suite
- ✅ Documentation and deployment guides
Success Criteria:
- Dashboard provides actionable insights
- Analytics respect territory boundaries
- Scanning flow works on mobile devices
- All features perform well under load
- Complete test coverage for new features
Launch Plan
Phase 1: Internal Testing (1 week)
Goal: Validate all systems with simulated data
Activities:
- Mock Event Creation: Create test events with all ticket types
- Simulated Sales: Generate mock ticket sales throughout day
- Territory Testing: Verify filtering works across all user roles
- Payment Simulation: Test OAuth flows and fee calculations
- Branding Validation: Ensure themes apply correctly
- Mobile Testing: Full mobile experience validation
Success Criteria:
- All core flows work without errors
- Performance meets acceptable standards
- Mobile experience is fully functional
- Error handling works as expected
Phase 2: Beta Organizer Testing (2-3 weeks)
Goal: Real-world validation with trusted partners
Partner Selection:
- 1-2 trusted organizers with smaller events
- Mix of different event types (performances, galas, etc.)
- Organizations willing to provide feedback
Testing Scope:
- Event Creation: Real event setup using new wizard
- Ticket Sales: Actual ticket sales to real customers
- Payment Processing: Live Square integration (if ready)
- Territory Management: Multi-user organization testing
- Customer Support: Full support flow validation
Success Criteria:
- Events are created successfully
- Ticket sales complete without issues
- Payment processing works correctly
- Customer satisfaction remains high
- No critical bugs discovered
Phase 3: Production Deployment
Goal: Full platform migration to new system
Deployment Strategy:
- DNS Cutover:
blackcanyontickets.com→ new application - Database Migration: Existing data → new schema
- User Migration: Account transfers and notifications
- Monitoring Setup: Error tracking and performance monitoring
- Support Preparation: Staff training on new features
Rollback Plan:
- DNS Revert: Quick DNS change back to old system
- Data Sync: Ensure data consistency between systems
- User Communication: Transparent communication about any issues
Technical Implementation Notes
Mock Data Architecture
All enterprise features will use the existing mock data pattern:
// Territory Store
interface TerritoryStore {
territories: Territory[];
userTerritories: Record<string, string[]>; // userId → territoryIds
createTerritory: (territory: Partial<Territory>) => void;
assignUserToTerritory: (userId: string, territoryId: string) => void;
getUserTerritories: (userId: string) => Territory[];
}
// Organization Branding Store
interface BrandingStore {
themes: Record<string, OrganizationTheme>; // orgId → theme
currentTheme: OrganizationTheme | null;
updateTheme: (orgId: string, theme: Partial<OrganizationTheme>) => void;
applyTheme: (orgId: string) => void;
}
Component Reusability
Enterprise features will leverage existing UI components:
- Forms: Use existing
Input,Select,Buttoncomponents - Modals: Extend current modal patterns
- Cards: Reuse
Cardcomponent for territory and branding displays - Navigation: Extend
Sidebarwith role-based menu items - Data Display: Use existing table and list patterns
TypeScript Integration
All new features will maintain strict TypeScript compliance:
// Comprehensive type definitions
export interface EnterpriseUser extends User {
role: 'superAdmin' | 'orgAdmin' | 'territoryManager' | 'staff';
territoryIds: string[];
permissions: Permission[];
}
export interface EnterpriseEvent extends Event {
territoryIds: string[];
brandingThemeId?: string;
squareConnectionId?: string;
}
Testing Strategy
Each enterprise feature will include:
- Unit Tests: Component-level testing with Jest
- Integration Tests: Feature flow testing with Playwright
- Visual Regression: Screenshot-based UI testing
- Accessibility Tests: WCAG compliance validation
- Performance Tests: Load testing for complex operations
Success Metrics
Feature Adoption
- Event Creation: 95% of events created through new wizard
- Territory Usage: Organizations with >5 users adopt territories
- Branding: 80% of organizations customize their theme
- Payment Integration: 90% of organizations connect Square
Performance Metrics
- Page Load Times: <2 seconds for all pages
- Form Submission: <1 second response time
- Mobile Performance: >90 Lighthouse score
- Error Rates: <1% error rate across all features
User Satisfaction
- Net Promoter Score: >8.0 for platform experience
- Feature Usefulness: >4.5/5 rating for new features
- Support Tickets: <5% increase despite added complexity
- User Retention: Maintain >95% retention rate
⚡ This enterprise roadmap transforms Black Canyon Tickets from a basic ticketing platform into a comprehensive, multi-tenant enterprise solution. By implementing these features systematically, we'll create a polished, scalable platform ready for fair season and enterprise customers.