# ============================================ # Wordly.art - .env de production # ============================================ # Copier ce fichier en .env sur le serveur # cp .env.production .env # Puis remplacer les valeurs [A CHANGER] # ============================================ # ---- Application ---- APP_NAME=Wordly APP_ENV=production DEBUG=false LOG_LEVEL=INFO # ---- Domaine ---- DOMAIN=wordly.art NEXT_PUBLIC_API_URL=https://wordly.art FRONTEND_URL=https://wordly.art BACKEND_PORT=8000 FRONTEND_PORT=3000 # ---- Service de traduction par defaut ---- # Choisir: google, ollama, deepseek, minimax, deepl, openai, openrouter TRANSLATION_SERVICE=google # ---- Google (gratuit, toujours actif) ---- GOOGLE_TRANSLATE_ENABLED=true # ---- Google OAuth (connexion avec Google) ---- GOOGLE_CLIENT_ID= NEXT_PUBLIC_GOOGLE_CLIENT_ID= # ---- Ollama (local, gratuit) ---- OLLAMA_ENABLED=false OLLAMA_BASE_URL=http://ollama:11434 OLLAMA_MODEL=llama3 # ---- DeepSeek ---- DEEPSEEK_ENABLED=false DEEPSEEK_API_KEY= DEEPSEEK_MODEL=deepseek-chat DEEPSEEK_BASE_URL=https://api.deepseek.com/v1 # ---- Minimax ---- MINIMAX_ENABLED=false MINIMAX_API_KEY= MINIMAX_MODEL=MiniMax-M1 MINIMAX_BASE_URL=https://api.minimax.chat/v1 # ---- DeepL ---- DEEPL_ENABLED=false DEEPL_API_KEY= # ---- OpenAI ---- OPENAI_ENABLED=false OPENAI_API_KEY= OPENAI_MODEL=gpt-4o-mini OPENAI_BASE_URL=https://api.openai.com/v1 # ---- OpenRouter ---- OPENROUTER_ENABLED=false OPENROUTER_API_KEY= OPENROUTER_MODEL=deepseek/deepseek-chat # ---- Upload ---- MAX_FILE_SIZE_MB=50 ALLOWED_EXTENSIONS=.docx,.xlsx,.pptx # ---- Rate Limiting ---- RATE_LIMIT_ENABLED=true RATE_LIMIT_REQUESTS_PER_MINUTE=60 RATE_LIMIT_TRANSLATIONS_PER_MINUTE=10 RATE_LIMIT_TRANSLATIONS_PER_HOUR=100 RATE_LIMIT_TRANSLATIONS_PER_DAY=500 # ---- Admin ---- ADMIN_USERNAME=admin ADMIN_PASSWORD_HASH=CHANGE_WITH_BCRYPT_HASH # ---- Secrets (deja generes) ---- JWT_SECRET_KEY=84-MniOv3rOZZ3FczwDvsNNHqZRf8yKI06uMNQGAgMSV8yAJ19comNe6FHHcnVyeNm-fvDxlcb9CWe40y4oy7A ADMIN_TOKEN_SECRET=1301880be1bc8026676d7f4fb13ae1c70fcd2abbd2f2cdfcb044eea5c7005ce3 CORS_ORIGINS=https://wordly.art # ---- Database ---- POSTGRES_USER=translate POSTGRES_PASSWORD=yLLgkEvt6mvzGDdoqtQvI1vEgMmR-W75ZTPW5StaIAU POSTGRES_DB=translate_db # ---- Monitoring ---- GRAFANA_USER=admin GRAFANA_PASSWORD=WordlyGrafana2026! # ---- Stripe ---- # Clés TEST — remplacer par sk_live_... / pk_live_... en production réelle STRIPE_PUBLISHABLE_KEY=pk_test_51SkSHkCKXUJE51jnCr2QV4vCE18GH1XF59eHrHOV46EORuZTPVXFXxrbcJamyoJLaUHMc2McCRVkU4b6VMAWVR2R00XRdwmXMx STRIPE_SECRET_KEY=sk_test_51SkSHkCKXUJE51jnbEtXZ0nKiTHTa8ohDwLH8fZiDVEx6Ze0g5dg4fGJJgX1VgNHvF93GE3HTramT3oQrCaqOxid00OXTcZlsW STRIPE_WEBHOOK_SECRET= # Price IDs créés dans Stripe Dashboard (wordly.art — test mode) STRIPE_PRICE_STARTER_MONTHLY=price_1TdF8FCKXUJE51jnNAeLqhF3 STRIPE_PRICE_STARTER_YEARLY=price_1TdF8GCKXUJE51jnBhVVrjrh STRIPE_PRICE_PRO_MONTHLY=price_1TdF8GCKXUJE51jn9ChAAhKM STRIPE_PRICE_PRO_YEARLY=price_1TdF8HCKXUJE51jnpsvBivDe STRIPE_PRICE_BUSINESS_MONTHLY=price_1TdF8HCKXUJE51jn2K9EeBGJ STRIPE_PRICE_BUSINESS_YEARLY=price_1TdF8ICKXUJE51jnmgWZxW4U