# =========================================== # GenPic — Environment Config # =========================================== APP_NAME="GenPic" APP_ENV=local APP_KEY= APP_DEBUG=true APP_TIMEZONE=Europe/Madrid APP_URL=http://localhost:8000 APP_LOCALE=es APP_FALLBACK_LOCALE=es APP_FAKER_LOCALE=es_ES # Idiomas activos (separados por comas) — añadir para que aparezcan en admin APP_LOCALES=es,en,fr,pt,it APP_MAINTENANCE_DRIVER=file # Mantenimiento por .env (true = 503 para todos excepto ADMIN_ALLOWED_IPS) MAINTENANCE_MODE=false PHP_CLI_SERVER_WORKERS=4 BCRYPT_ROUNDS=12 # ------------------------------------------- # Logging # ------------------------------------------- LOG_CHANNEL=stack LOG_STACK=single LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=debug # ------------------------------------------- # Base de Datos — MariaDB 10.11 # ------------------------------------------- DB_CONNECTION=mysql DB_HOST=mariadb DB_PORT=3306 DB_DATABASE=genpic DB_USERNAME=genpic DB_PASSWORD=secret # ------------------------------------------- # Sesión y Cache — Redis # ------------------------------------------- SESSION_DRIVER=redis SESSION_LIFETIME=120 SESSION_ENCRYPT=false SESSION_PATH=/ SESSION_DOMAIN=null BROADCAST_CONNECTION=log FILESYSTEM_DISK=local QUEUE_CONNECTION=redis CACHE_STORE=redis CACHE_PREFIX=pmf_ REDIS_CLIENT=phpredis REDIS_HOST=redis REDIS_USERNAME=null REDIS_PASSWORD=null REDIS_PORT=6379 REDIS_PREFIX=genpic_ # ------------------------------------------- # Email — Agnóstico (cambiar MAIL_MAILER según proveedor) # Opciones: smtp, sendmail, log (dev) # Para Resend: MAIL_MAILER=smtp, MAIL_HOST=smtp.resend.com, MAIL_PORT=465 # Para Postal: MAIL_MAILER=smtp, MAIL_HOST=postal.tudominio.com # ------------------------------------------- MAIL_MAILER=log MAIL_SCHEME=null MAIL_HOST=127.0.0.1 MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_FROM_ADDRESS="hello@example.com" MAIL_FROM_NAME="GenPic" # ------------------------------------------- # Wasabi S3 — Storage de imágenes # ------------------------------------------- WASABI_KEY= WASABI_SECRET= WASABI_REGION=eu-central-1 WASABI_BUCKET=your-bucket WASABI_ENDPOINT=https://s3.eu-central-1.wasabisys.com # ------------------------------------------- # Titular del servicio (pie de página, emails, metadatos de imagen) # Los textos legales de lang/*/ui.php llevan datos de ejemplo: reescríbelos. # ------------------------------------------- COMPANY_NAME="Example Company S.L." CONTACT_EMAIL=hello@example.com WATERMARK_TEXT="GenPic preview" # ------------------------------------------- # Admin — emails con acceso al panel Filament (separados por comas) # ------------------------------------------- # Ruta del panel. Cambiarla solo oculta; la protección real son las dos de abajo. ADMIN_PATH=admin ADMIN_EMAILS=admin@example.com # IPs autorizadas (vacío = sin restricción, para dev local) ADMIN_ALLOWED_IPS= # ------------------------------------------- # Stripe — Pagos # ------------------------------------------- STRIPE_KEY=pk_test_... STRIPE_SECRET=sk_test_... STRIPE_WEBHOOK_SECRET=whsec_... # ------------------------------------------- # Proveedores IA — SeedReam 4.5 # ------------------------------------------- # Cadena de proveedores (orden prioridad) # fal.ai primero (respeta aspect ratio), OpenRouter segundo, resto respaldo AI_PROVIDER_CHAIN=fal_ai,openrouter,novita,evolink # fal.ai — $0.04/imagen FAL_AI_KEY= FAL_AI_ENABLED=true # OpenRouter.ai — $0.04/imagen OPENROUTER_API_KEY= OPENROUTER_ENABLED=false OPENROUTER_DEFAULT_MODEL=bytedance-seed/seedream-4.5 # Evolink.ai — $0.031/imagen EVOLINK_API_KEY= EVOLINK_ENABLED=false # Novita.ai — $0.03/imagen (más barato) NOVITA_API_KEY= NOVITA_ENABLED=false # Upscale (Real-ESRGAN) UPSCALE_PROVIDER=fal_ai # ------------------------------------------- # Tiempos de retención y límites # ------------------------------------------- GENERATION_SESSION_TTL_DAYS=14 DOWNLOAD_LINK_TTL_HOURS=72 FILE_PURGE_GRACE_DAYS=1 RATE_LIMIT_GENERATIONS_PER_IP=3 RATE_LIMIT_PERIOD_HOURS=24 DAILY_COST_BUDGET_USD=50 # Cache páginas públicas (landing, estilos, galería) — 0 = desactivado CACHE_PUBLIC_PAGES_HOURS=24 # Seguridad: verificación PIN por email (true/false) # false = acceso directo tras email. true = requiere PIN adicional. REQUIRE_PIN_VERIFICATION=false # Requerir email antes de generar (true/false) # false = genera directo, pide email solo al comprar # true = pide email antes de generar REQUIRE_EMAIL_BEFORE_GENERATION=false FACE_DETECTION_ENABLED=true # ------------------------------------------- # Content Moderation (deteccion NSFW) # ------------------------------------------- CONTENT_MODERATION_ENABLED=true CONTENT_MODERATION_PROVIDER=huggingface CONTENT_MODERATION_BAN_HOURS=72 HUGGINGFACE_TOKEN= # ------------------------------------------- # Vite # ------------------------------------------- VITE_APP_NAME="${APP_NAME}" # ------------------------------------------- # Cierre del servicio # ------------------------------------------- # true = cierra altas y compras (/create y /checkout devuelven 410 con la # pagina de cierre) y muestra el aviso permanente en toda la web. # Siguen funcionando: galeria, estilos, landings, legales, /my-downloads, # /portrait y las descargas firmadas. CLOSED_MODE=false CLOSED_MODE_DATE=2026-09-30 OPENSOURCE_REPO_URL= # Hasta cuando se pueden recuperar los retratos ya generados. NO es la fecha de # cierre: cerrar las altas no borra lo que ya existe. Vacio = fecha de cierre + # GENERATION_SESSION_TTL_DAYS. Si el plazo ya pasó, la pagina deja de darlo. CLOSED_DOWNLOADS_UNTIL=