# 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**: 1. **Event Details** → Basic information (title, description, date, venue) 2. **Ticket Configuration** → Pricing tiers, inventory limits, presale settings 3. **Publish Settings** → Review and publish event **Components to Build**: - `EventCreationWizard.tsx` - Main wizard container with step navigation - `EventDetailsStep.tsx` - Basic event information form - `TicketConfigurationStep.tsx` - Ticket type management interface - `PublishStep.tsx` - Final review and publication controls - `WizardNavigation.tsx` - Step indicator and navigation controls **Mock Data Integration**: ```typescript interface EventWizardState { currentStep: 1 | 2 | 3; eventDetails: Partial; ticketTypes: Partial[]; 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 container - `PricingSection.tsx` - Price and fee configuration - `InventorySection.tsx` - Quantity and availability settings - `SaleWindowsSection.tsx` - Time-based availability controls - `FeeBreakdownPreview.tsx` - Real-time fee calculation display ### Refund / Void Ticket Flow **Purpose**: Administrative controls for refunding or voiding tickets **Flow Options**: 1. **Full Refund**: Return money and cancel ticket 2. **Partial Refund**: Return portion of payment 3. **Void Ticket**: Cancel without refund (comps, internal use) 4. **Transfer**: Move ticket to different customer **Components**: - `RefundModal.tsx` - Main refund interface - `RefundReasonSelector.tsx` - Dropdown for refund reasons - `RefundCalculator.tsx` - Fee calculation and breakdown - `RefundConfirmation.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 interface - `RoleSelector.tsx` - Permission level selection - `TerritorySelector.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 interface - `SquareOAuthButton.tsx` - OAuth initiation button - `AccountVerificationForm.tsx` - Business details form - `PayoutSettingsForm.tsx` - Payout configuration ## Territory Management System ### Role Hierarchy **Purpose**: Multi-level administrative structure for large organizations **Role Structure**: 1. **Super Admin**: Platform-wide access, system configuration 2. **Organization Admin**: Full organization access, user management 3. **Territory Manager**: Regional access, event oversight within territory 4. **Staff**: Limited access, event-specific permissions **Permission Matrix**: ```typescript 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**: ```typescript 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**: ```typescript // 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 territories - `TerritoryCreationForm.tsx` - Create new territory - `TerritoryEditor.tsx` - Edit existing territory - `UserTerritoryAssignments.tsx` - Assign users to territories - `TerritoryBoundaryMap.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**: 1. **Initiate Connection**: Organizer clicks "Connect Square" 2. **Mock OAuth Redirect**: Simulate Square authorization page 3. **Token Exchange**: Mock server-side token handling 4. **Account Verification**: Store connection status 5. **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**: ```typescript 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**: ```typescript 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 interface - `LogoUploader.tsx` - Image upload and cropping - `ColorPicker.tsx` - Brand color selection - `ThemePreview.tsx` - Live preview of changes - `BrandingTemplates.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): ```typescript 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: ```typescript // Territory Store interface TerritoryStore { territories: Territory[]; userTerritories: Record; // userId → territoryIds createTerritory: (territory: Partial) => void; assignUserToTerritory: (userId: string, territoryId: string) => void; getUserTerritories: (userId: string) => Territory[]; } // Organization Branding Store interface BrandingStore { themes: Record; // orgId → theme currentTheme: OrganizationTheme | null; updateTheme: (orgId: string, theme: Partial) => void; applyTheme: (orgId: string) => void; } ``` ### Component Reusability Enterprise features will leverage existing UI components: - **Forms**: Use existing `Input`, `Select`, `Button` components - **Modals**: Extend current modal patterns - **Cards**: Reuse `Card` component for territory and branding displays - **Navigation**: Extend `Sidebar` with role-based menu items - **Data Display**: Use existing table and list patterns ### TypeScript Integration All new features will maintain strict TypeScript compliance: ```typescript // 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.