project5 / .env.example
GitHub Action
Deploy to HuggingFace Spaces from main branch
66a0674
# =============================================================================
# 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