# ============================================================================= # FICHIER DE CONFIGURATION ENVIRONNEMENT - PROJECT5 # ============================================================================= # Copiez ce fichier vers .env et modifiez les valeurs selon vos besoins # ATTENTION: Ne commitez jamais le fichier .env (il contient des secrets) # ============================================================================= # CONFIGURATION DE L'APPLICATION # ============================================================================= APP_NAME=Project5 API VERSION=0.1.0 ENVIRONMENT=development DEBUG=true # Host et port pour le serveur HOST=0.0.0.0 PORT=8000 # ============================================================================= # SÉCURITÉ - CHANGEZ CES VALEURS EN PRODUCTION ! # ============================================================================= # Clé secrète pour JWT et sessions (génération: openssl rand -hex 32) SECRET_KEY=votre-cle-secrete-super-longue-et-complexe-changez-moi-en-production-123456789abcdef # Algorithme de hachage pour JWT ALGORITHM=HS256 # Durée de validité des tokens (en minutes) ACCESS_TOKEN_EXPIRE_MINUTES=30 # Clé pour le refresh token (optionnel) REFRESH_TOKEN_EXPIRE_DAYS=7 # ============================================================================= # BASE DE DONNÉES - POSTGRESQL # ============================================================================= # URL complète de la base de données PostgreSQL DATABASE_URL=postgresql://project5_user:project5_password@localhost:5432/project5_db # Paramètres séparés (utilisés par Docker Compose) POSTGRES_HOST=localhost POSTGRES_PORT=5432 POSTGRES_DB=project5_db POSTGRES_USER=project5_user POSTGRES_PASSWORD=project5_password # Configuration SQLAlchemy SQLALCHEMY_ECHO=false SQLALCHEMY_POOL_SIZE=5 SQLALCHEMY_MAX_OVERFLOW=10 SQLALCHEMY_POOL_PRE_PING=true SQLALCHEMY_POOL_RECYCLE=300 # ============================================================================= # BASE DE DONNÉES DE TEST - SQLITE # ============================================================================= # Utilisée pour les tests unitaires (plus rapide que PostgreSQL) TEST_DATABASE_URL=sqlite:///./test_project5.db # ============================================================================= # LOGGING # ============================================================================= LOG_LEVEL=INFO LOG_FORMAT=%(asctime)s - %(name)s - %(levelname)s - %(message)s LOG_FILE=logs/project5.log LOG_MAX_SIZE=10MB LOG_BACKUP_COUNT=5 # ============================================================================= # CORS - Configuration des domaines autorisés # ============================================================================= # Domaines autorisés pour les requêtes CORS (séparés par des virgules) ALLOWED_ORIGINS=http://localhost:3000,http://localhost:8080,http://127.0.0.1:3000 ALLOWED_METHODS=GET,POST,PUT,DELETE,PATCH,OPTIONS ALLOWED_HEADERS=* # ============================================================================= # REDIS - Cache et sessions (optionnel) # ============================================================================= # REDIS_URL=redis://localhost:6379/0 # REDIS_HOST=localhost # REDIS_PORT=6379 # REDIS_DB=0 # REDIS_PASSWORD= # REDIS_EXPIRE_TIME=3600 # ============================================================================= # EMAIL - Configuration SMTP (optionnel) # ============================================================================= # SMTP_HOST=smtp.gmail.com # SMTP_PORT=587 # SMTP_USER=votre.email@gmail.com # SMTP_PASSWORD=votre-mot-de-passe-app # SMTP_TLS=true # SMTP_FROM_EMAIL=noreply@project5.com # SMTP_FROM_NAME=Project5 API # ============================================================================= # STOCKAGE DE FICHIERS (optionnel) # ============================================================================= # Répertoire local pour les uploads # UPLOAD_DIRECTORY=uploads # MAX_FILE_SIZE=10MB # ALLOWED_FILE_EXTENSIONS=jpg,jpeg,png,gif,pdf,doc,docx # Configuration AWS S3 (optionnel) # AWS_ACCESS_KEY_ID=votre-access-key # AWS_SECRET_ACCESS_KEY=votre-secret-key # AWS_BUCKET_NAME=votre-bucket # AWS_REGION=eu-west-1 # ============================================================================= # MONITORING ET OBSERVABILITÉ (optionnel) # ============================================================================= # Sentry pour le monitoring d'erreurs # SENTRY_DSN=https://votre-sentry-dsn@sentry.io/project-id # Prometheus metrics # ENABLE_METRICS=false # METRICS_PORT=9090 # ============================================================================= # RATE LIMITING (optionnel) # ============================================================================= # RATE_LIMIT_REQUESTS=100 # RATE_LIMIT_WINDOW=3600 # RATE_LIMIT_STORAGE=memory # ============================================================================= # CONFIGURATION DOCKER COMPOSE # ============================================================================= # Variables utilisées par docker-compose.yml COMPOSE_PROJECT_NAME=project5 COMPOSE_FILE=docker-compose.yml # Ports exposés API_PORT=8000 DB_PORT=5432 # ============================================================================= # DÉVELOPPEMENT LOCAL # ============================================================================= # Rechargement automatique en développement AUTO_RELOAD=true # Affichage détaillé des requêtes SQL SQL_DEBUG=false # Mode de développement pour FastAPI FASTAPI_DEBUG=true FASTAPI_RELOAD=true # ============================================================================= # TESTS # ============================================================================= # Configuration spécifique aux tests TESTING=false TEST_LOG_LEVEL=WARNING # Base de données de test séparée TEST_POSTGRES_DB=project5_test_db TEST_POSTGRES_USER=project5_test_user TEST_POSTGRES_PASSWORD=project5_test_password # ============================================================================= # PRODUCTION - Variables critiques à définir # ============================================================================= # En production, assurez-vous de définir: # - SECRET_KEY (généré de manière sécurisée) # - DATABASE_URL (avec les vrais credentials) # - ALLOWED_ORIGINS (domaines de production) # - ENVIRONMENT=production # - DEBUG=false # - LOG_LEVEL=WARNING ou ERROR # ============================================================================= # NOTES D'UTILISATION # ============================================================================= # 1. Copiez ce fichier: cp .env.example .env # 2. Modifiez les valeurs dans .env selon vos besoins # 3. Le fichier .env ne doit JAMAIS être commité dans Git # 4. Utilisez des valeurs différentes pour dev/test/production # 5. Générez des clés secrètes fortes pour la production # # Génération de SECRET_KEY sécurisée: # python -c "import secrets; print(secrets.token_urlsafe(32))" # ou # openssl rand -base64 32