// Configuration for the frontend application const CONFIG = { // API Configuration API_BASE_URL: process.env.NODE_ENV === 'production' ? 'https://api.seo-image-renamer.com' : 'http://localhost:3001', // WebSocket Configuration WEBSOCKET_URL: process.env.NODE_ENV === 'production' ? 'wss://api.seo-image-renamer.com' : 'ws://localhost:3001', // Stripe Configuration STRIPE_PUBLISHABLE_KEY: process.env.NODE_ENV === 'production' ? 'pk_live_your_stripe_publishable_key' : 'pk_test_51234567890abcdef', // Google OAuth Configuration GOOGLE_CLIENT_ID: process.env.NODE_ENV === 'production' ? 'your-production-google-client-id.apps.googleusercontent.com' : 'your-dev-google-client-id.apps.googleusercontent.com', // Upload Configuration MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB MAX_FILES: 50, SUPPORTED_FORMATS: ['image/jpeg', 'image/png', 'image/webp', 'image/gif'], // Processing Configuration WEBSOCKET_RECONNECT_INTERVAL: 5000, MAX_RECONNECT_ATTEMPTS: 5, // UI Configuration ANIMATION_DURATION: 300, TOAST_DURATION: 5000, // Feature Flags FEATURES: { GOOGLE_AUTH: true, STRIPE_PAYMENTS: true, WEBSOCKET_UPDATES: true, IMAGE_PREVIEW: true, BATCH_PROCESSING: true, DOWNLOAD_TRACKING: true, }, // Error Messages ERRORS: { NETWORK_ERROR: 'Network error. Please check your connection and try again.', AUTH_REQUIRED: 'Please sign in to continue.', QUOTA_EXCEEDED: 'You have reached your monthly quota. Please upgrade your plan.', FILE_TOO_LARGE: 'File is too large. Maximum size is 10MB.', UNSUPPORTED_FORMAT: 'Unsupported file format. Please use JPG, PNG, WebP, or GIF.', TOO_MANY_FILES: 'Too many files. Maximum is 50 files per batch.', PROCESSING_FAILED: 'Processing failed. Please try again.', DOWNLOAD_FAILED: 'Download failed. Please try again.', }, // Success Messages SUCCESS: { UPLOAD_COMPLETE: 'Files uploaded successfully!', PROCESSING_COMPLETE: 'Images processed successfully!', DOWNLOAD_READY: 'Your download is ready!', PAYMENT_SUCCESS: 'Payment successful! Your plan has been upgraded.', KEYWORDS_ENHANCED: 'Keywords enhanced successfully!', }, // API Endpoints ENDPOINTS: { // Auth GOOGLE_AUTH: '/api/auth/google', LOGIN: '/api/auth/login', LOGOUT: '/api/auth/logout', ME: '/api/auth/me', // Users USER_PROFILE: '/api/users/profile', USER_STATS: '/api/users/stats', USER_QUOTA: '/api/users/quota', // Batches BATCHES: '/api/batches', BATCH_STATUS: '/api/batches/:id/status', BATCH_IMAGES: '/api/batches/:id/images', // Images IMAGES: '/api/images', IMAGE_UPLOAD: '/api/images/upload', IMAGE_UPDATE: '/api/images/:id', // Keywords KEYWORD_ENHANCE: '/api/keywords/enhance', // Payments PAYMENT_CHECKOUT: '/api/payments/checkout', PAYMENT_PORTAL: '/api/payments/portal', PAYMENT_SUBSCRIPTION: '/api/payments/subscription', PAYMENT_PLANS: '/api/payments/plans', // Downloads DOWNLOAD_CREATE: '/api/downloads/create', DOWNLOAD_STATUS: '/api/downloads/:id/status', DOWNLOAD_FILE: '/api/downloads/:id', DOWNLOAD_HISTORY: '/api/downloads/user/history', }, // WebSocket Events WEBSOCKET_EVENTS: { // Connection CONNECT: 'connect', DISCONNECT: 'disconnect', ERROR: 'error', // Batch Processing BATCH_CREATED: 'batch.created', BATCH_UPDATED: 'batch.updated', BATCH_COMPLETED: 'batch.completed', BATCH_FAILED: 'batch.failed', // Image Processing IMAGE_PROCESSING: 'image.processing', IMAGE_COMPLETED: 'image.completed', IMAGE_FAILED: 'image.failed', // Progress Updates PROGRESS_UPDATE: 'progress.update', // User Updates QUOTA_UPDATED: 'quota.updated', SUBSCRIPTION_UPDATED: 'subscription.updated', }, // Local Storage Keys STORAGE_KEYS: { AUTH_TOKEN: 'seo_auth_token', USER_DATA: 'seo_user_data', RECENT_KEYWORDS: 'seo_recent_keywords', UPLOAD_PROGRESS: 'seo_upload_progress', BATCH_DATA: 'seo_batch_data', }, // URLs URLS: { TERMS_OF_SERVICE: '/terms', PRIVACY_POLICY: '/privacy', SUPPORT: '/support', DOCUMENTATION: '/docs', }, // Quota Limits by Plan PLAN_LIMITS: { BASIC: 50, PRO: 500, MAX: 1000, }, // Plan Prices (in cents) PLAN_PRICES: { BASIC: 0, PRO: 900, // $9.00 MAX: 1900, // $19.00 }, // Image Processing Settings IMAGE_PROCESSING: { MAX_FILENAME_LENGTH: 100, MIN_KEYWORDS: 1, MAX_KEYWORDS: 10, SUPPORTED_EXTENSIONS: ['.jpg', '.jpeg', '.png', '.webp', '.gif'], }, // Development Settings DEV: { ENABLE_LOGGING: true, MOCK_API_DELAY: 1000, ENABLE_DEBUG_MODE: process.env.NODE_ENV === 'development', }, }; // Environment-specific overrides if (typeof window !== 'undefined') { // Browser environment const hostname = window.location.hostname; if (hostname === 'localhost' || hostname === '127.0.0.1') { CONFIG.API_BASE_URL = 'http://localhost:3001'; CONFIG.WEBSOCKET_URL = 'ws://localhost:3001'; } } // Export configuration if (typeof module !== 'undefined' && module.exports) { module.exports = CONFIG; } else if (typeof window !== 'undefined') { window.CONFIG = CONFIG; }