File size: 7,064 Bytes
66a0674
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# =============================================================================
# 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