All files / src/environments environment.ts

100% Statements 1/1
100% Branches 0/0
100% Functions 0/0
100% Lines 1/1

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116          1x                                                                                                                                                                                                                            
// Configuration d'environnement unique pour développement et production
// Utilise des URLs relatives (/api) qui fonctionnent avec Traefik en local et en production
 
import { Environment } from './environment.d';
 
export const environment: Environment = {
  production: false, // Mode développement (logs visibles)
  enableDebugLogs: true, // ✅ Logs de debug activés
  enableConsoleLogs: true, // ✅ Console logs activés
 
  // Configuration MySQL Database (local)
  database: {
    host: 'localhost',
    port: 3306,
    name: 'faildaily_bdd',
    charset: 'utf8mb4',
  },
 
  // Configuration Firebase (notifications push uniquement)
  firebase: {
    apiKey: 'AIzaSyB_T4whbgp5_AgGX2m_SjJPh7Ui2e1T5S0',
    authDomain: 'faildaily-8efdd.firebaseapp.com',
    projectId: 'faildaily-8efdd',
    storageBucket: 'faildaily-8efdd.firebasestorage.app',
    messagingSenderId: '903740944900',
    appId: '1:903740944900:web:8fad55851ecbdddbb7fb51',
    measurementId: 'G-3MW14JBHJB',
  },
 
  // APIs backend MySQL et externes
  api: {
    baseUrl: '/api', // URL relative pour Traefik (local et production)
    moderationUrl: 'https://api.openai.com/v1',
    moderationKey: '', // À remplir avec votre clé OpenAI
    uploadMaxSize: 3 * 1024 * 1024, // 3MB max en production
    imageQuality: 75, // Qualité optimisée pour la production
    timeout: 30000, // 30 secondes timeout
    retryAttempts: 3, // Retry API calls
  },
 
  // Configuration authentification JWT
  auth: {
    tokenKey: 'auth_token',
    userKey: 'current_user',
    expiresIn: '7d', // 7 jours en production
    refreshThreshold: 3600, // Refresh 1 heure avant expiration
  },
 
  // Configuration du storage
  storage: {
    baseUrl: '/uploads', // Utilise le même domaine que le frontend
    uploadsPath: '',
    maxFileSize: 3 * 1024 * 1024, // 3MB en production
    allowedImageTypes: ['image/jpeg', 'image/png', 'image/webp'],
    compressionQuality: 0.75, // Compression plus agressive en prod
  },
 
  // Configuration des notifications
  notifications: {
    vapidKey:
      'BPZynayDkO_mZlZegESabpVK43c7cpJDouoY4shF0f212KfHplFsD7T50zj_FqJ7q84vv6q8JOzfoVAfTQ2-9mY', // Clé VAPID Firebase
    reminderTimes: {
      min: 18, // 18h minimum
      max: 22, // 22h maximum
      default: 19, // 19h par défaut
    },
    enablePush: true,
    enableInApp: true,
    debugMode: false, // Debug désactivé en production
    retryAttempts: 5,
    retryDelay: 5000,
  },
 
  // Configuration de l'app
  app: {
    name: 'FailDaily',
    version: '2.0.0-mysql',
    maxFailsPerDay: 3, // Limite plus stricte en production
    courageHeartCooldown: 5000, // 5 secondes entre réactions
    anonymousMode: false, // Mode anonyme désactivé en prod
    locationEnabled: true, // Géolocalisation activée en prod
    cacheEnabled: true,
    offlineMode: true, // Mode hors ligne activé en prod
  },
 
  // Configuration des badges et points
  badges: {
    firstFailPoints: 10,
    dailyStreakPoints: 5,
    courageHeartPoints: 2,
    communityHelpPoints: 15,
    maxDailyPoints: 50, // Limite plus stricte en prod
    pointsMultiplier: 1.5, // Bonus en production
  },
 
  // Configuration MySQL optimisée pour la production
  mysql: {
    connectionPoolSize: 50, // Pool plus important en prod
    queryTimeout: 10000, // Timeout plus court en prod
    reconnectAttempts: 5,
    enableQueryLogging: false, // Logs désactivés en prod pour performance
  },
 
  // Fonctionnalités (optimisées pour la production)
  features: {
    groupChallenges: false, // Pas encore prêt pour la prod
    aiCounselor: false, // En développement
    darkModeAuto: true,
    hapticFeedback: true,
    realTimeUpdates: true,
    advancedAnalytics: true,
    betaFeatures: false, // Features beta désactivées en prod
  },
};