import { FeatureFlagConfig } from './feature-types'; /** * Feature flag configuration for all environments * * ARCHITECTURE: API-Driven Features * - All feature control comes from the API /features endpoint * - FeatureFlagService fetches and caches features * - Components use FeatureFlagService or ModeGuard for conditional rendering * * FEATURE STATES - DETAILED EXPLANATION: * * 'enabled' = Feature is fully available to users * - Visible in UI * - Fully functional * - No restrictions * - Example: "Users can create leagues" * * 'disabled' = Feature is turned off for everyone * - Not visible in UI (or shown as unavailable) * - Non-functional * - Users cannot access it * - Use when: Feature is broken, not ready, or intentionally removed * - Example: "Sponsor management disabled due to bug" * * 'coming_soon' = Feature is visible but not yet available * - Visible in UI with "Coming Soon" badge * - Shows users what's coming * - Builds anticipation * - Use when: Feature is in development, users should know about it * - Example: "New UI coming soon" - users see it but can't use it * * 'hidden' = Feature is completely invisible * - Not shown in UI at all * - No user knows it exists * - Use when: Feature is experimental, internal-only, or not ready for ANY visibility * - Example: "Experimental AI feature" - only devs know it exists * * DECISION TREE: * - Should users see this feature exists? * - NO → 'hidden' or 'disabled' * - YES → Should they be able to use it? * - NO → 'coming_soon' * - YES → 'enabled' * * REAL-WORLD EXAMPLES: * - 'enabled': Dashboard, leagues, teams (core features working) * - 'disabled': Sponsor management (broken, don't show anything) * - 'coming_soon': New UI redesign (users see "coming soon" banner) * - 'hidden': Experimental chat feature (internal testing only) */ export const featureConfig: FeatureFlagConfig = { // Development environment - all features enabled for testing development: { // Core platform features platform: { dashboard: 'enabled', leagues: 'enabled', teams: 'enabled', drivers: 'enabled', races: 'enabled', leaderboards: 'enabled', }, // Authentication & onboarding auth: { signup: 'enabled', login: 'enabled', forgotPassword: 'enabled', resetPassword: 'enabled', }, onboarding: { wizard: 'enabled', }, // Sponsor features sponsors: { portal: 'enabled', dashboard: 'enabled', management: 'enabled', campaigns: 'enabled', billing: 'enabled', }, // Admin features admin: { dashboard: 'enabled', userManagement: 'enabled', analytics: 'enabled', }, // Beta features for testing beta: { newUI: 'enabled', experimental: 'coming_soon', }, }, // Test environment - all features enabled for automated tests test: { platform: { dashboard: 'enabled', leagues: 'enabled', teams: 'enabled', drivers: 'enabled', races: 'enabled', leaderboards: 'enabled', }, auth: { signup: 'enabled', login: 'enabled', forgotPassword: 'enabled', resetPassword: 'enabled', }, onboarding: { wizard: 'enabled', }, sponsors: { portal: 'enabled', dashboard: 'enabled', management: 'enabled', campaigns: 'enabled', billing: 'enabled', }, admin: { dashboard: 'enabled', userManagement: 'enabled', analytics: 'enabled', }, beta: { newUI: 'disabled', experimental: 'disabled', }, }, // Staging environment - controlled feature rollout staging: { // Core platform features platform: { dashboard: 'enabled', leagues: 'enabled', teams: 'enabled', drivers: 'enabled', races: 'enabled', leaderboards: 'enabled', }, // Authentication & onboarding auth: { signup: 'enabled', login: 'enabled', forgotPassword: 'enabled', resetPassword: 'enabled', }, onboarding: { wizard: 'enabled', }, // Sponsor features (gradual rollout) sponsors: { portal: 'enabled', dashboard: 'enabled', management: 'coming_soon', // Ready for testing but not fully rolled out campaigns: 'enabled', billing: 'enabled', }, // Admin features admin: { dashboard: 'enabled', userManagement: 'enabled', analytics: 'enabled', }, // Beta features (controlled rollout) beta: { newUI: 'coming_soon', // Ready for testing but not fully rolled out experimental: 'hidden', }, }, // Production environment - stable features only production: { // Core platform features (stable) platform: { dashboard: 'enabled', leagues: 'enabled', teams: 'enabled', drivers: 'enabled', races: 'enabled', leaderboards: 'enabled', }, // Authentication & onboarding (stable) auth: { signup: 'enabled', login: 'enabled', forgotPassword: 'enabled', resetPassword: 'enabled', }, onboarding: { wizard: 'enabled', }, // Sponsor features (gradual rollout) sponsors: { portal: 'enabled', dashboard: 'enabled', management: 'disabled', // Feature not ready yet campaigns: 'enabled', billing: 'enabled', }, // Admin features (stable) admin: { dashboard: 'enabled', userManagement: 'enabled', analytics: 'disabled', // Feature not ready yet }, // Beta features (controlled rollout) beta: { newUI: 'disabled', // Not ready for production experimental: 'hidden', }, }, };