# In all environments, the following files are loaded if they exist, # the latter taking precedence over the former: # # * .env contains default values for the environment variables needed by the app # * .env.local uncommitted file with local overrides # * .env.$APP_ENV committed environment-specific defaults # * .env.$APP_ENV.local uncommitted environment-specific overrides # # Real environment variables win over .env files. # # DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. # https://symfony.com/doc/current/configuration/secrets.html # # Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration ###> symfony/framework-bundle ### APP_ENV=dev APP_SECRET=642ead390b8a38f0a017ec84d5362129 ###< symfony/framework-bundle ### ###> doctrine/doctrine-bundle ### # Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url # IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml # # DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4" DATABASE_URL="mysql://db:db@db:3306/db?serverVersion=mariadb-11.8.9&charset=utf8mb4" # DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8" ###< doctrine/doctrine-bundle ### ###> symfony/messenger ### # Choose one of the transports below # MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages # MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0 ###< symfony/messenger ### ###> symfony/mailer ### MAILER_DSN=null://null ###< symfony/mailer ### MAILJET_API_KEY= MAILJET_API_SECRET= MAILJET_API_BASE_URL=https://api.mailjet.com/v3/REST MAILJET_DEFAULT_LIST_ID= # Development default for HTTP Basic Auth password; override in production secrets. MAILJET_WEBHOOK_BASIC_PASSWORD=secret APP_NEWSLETTER_CONFIRMATION_TTL_HOURS=1 # Dedicated signing secret for accommodation booking customer access links (kept separate # from APP_SECRET so it can be rotated independently). Unlike lazily-used API keys, UriSigner # validates this is non-empty at construction time, so a real dev value is required here # (override in .env.local/production secrets as usual). ACCOMMODATION_OFFER_LINK_SECRET=abf8ec28cc2162d9121d35d6f8cbf7c29728cdacce0303e22e1bac854501728a ACCOMMODATION_TERMS_AT= ACCOMMODATION_TERMS_CH= ACCOMMODATION_TERMS_IT= BPN_CONNECT_BASE_URL=https://bpn-connect.ep-reisen.app BPN_CONNECT_API_KEY= # ClickUp task created when an accommodation booking is confirmed. Token/ids are secrets and # stay empty here — set them in .env.local. Without them the handler skips with a warning. CLICKUP_API_TOKEN= CLICKUP_LIST_ID= CLICKUP_TEMPLATE_ID= CLICKUP_API_BASE_URL=https://api.clickup.com/api/v2 APP_BPN_USER= APP_BPN_PASSWORD= APP_BPN_IP= APP_BPN_PORTS= APP_BPN_DEBUG=false APP_BPN_CONNECTION_TIMEOUT=5 APP_BPN_STREAM_TIMEOUT=30 APP_BPN_TOTAL_TIMEOUT=45 APP_TRAVEL_INFO_BASE_URL="https://www.ep-reisen.de/reiseinformationen/" APP_LEGAL_NOTICE_URL="https://www.ep-reisen.de/unternehmen/impressum-skireiseveranstalter/" APP_TERMS_AND_CONDITIONS_URL="https://www.ep-reisen.de/skireisen/infos/allgemeine-infos/agb/" APP_PRIVACY_POLICY_URL="https://www.ep-reisen.de/unternehmen/impressum-skireiseveranstalter/datenschutz-winterreisen/" APP_CMS_API_BASE_URL="https://www.ep-reisen.de/" # TYPO3 API key (X-Api-Key), sent by the typo3.client scoped client and by app:content:sync; # the real value per stage goes in .env.local APP_CMS_API_KEY= # Bearer tokens for the chatbot MCP endpoint (/mcp), one per client: "name:token,name:token" # (e.g. "n8n:…,claude-desktop:…"); empty refuses every request APP_MCP_TOKENS= APP_WEBSITE_BASE_URL="https://www.ep-reisen.de/" APP_BASE_URL="https://my.ep-reisen.de" APP_CUSTOMER_SERVICE_EMAIL="kundenservice@ep-reisen.de" APP_INSURANCE_REVOCATION_URL="https://www.hmrv.de/daten-aendern/vertrag-beenden/widerruf" # Travel Data Service Configuration APP_TRAVEL_PREFER_REMOTE=false APP_TRAVEL_ENABLE_FALLBACK=true APP_TRAVEL_SNAPSHOT_RETENTION_BUFFER_DAYS=14 # Compensates a BusPro export defect: a can omit its preis although the booking # engine still bills the return-leg Abfahrtsortzuschlag, so we undercharge by exactly one leg. # A boarding point costs the same in both directions, so the stated price is applied to both. # Off = report the export verbatim. Provisional until the vendor fixes the export; see # docs/buspro-database-reference.md section A7. # Flipping this needs `app:bpn:xml-cache-invalidate` and `app:bpn:refresh-travel-snapshot`, # because the cached travels and TravelSnapshot rows carry the parsed price. APP_BPN_LEVEL_BOARDING_POINT_PRICES=true # Off turns every navigation into a full page load, which the web debug toolbar needs: its loader # script never runs on a boosted body swap. Explicit hx-get/hx-post requests are unaffected. # Only for local debugging; prod and the boosted code paths (HxRedirectResponse, error modal) need it on. APP_HTMX_BOOST=true # Emails APP_DEFAULT_EMAIL_FROM=info@ep-reisen.de APP_DEFAULT_EMAIL_TO=info@ep-reisen.de ACCOMMODATION_INQUIRY_EMAIL=gruppen@ep-reisen.de # Comma-separated; recipients of the role nomination notification. Empty means disable notification. APP_ROLE_NOMINATION_EMAILS= # Global common defaults APP_SEASON_WINTER_FROM=2026-10-01 APP_SEASON_SUMMER_FROM=2026-05-01 APP_RUNNING_COSTS_FACTOR_EUR=2.75 APP_RUNNING_COSTS_FACTOR_CHF=3.2 APP_UNDERSUBSCRIPTION_SURCHARGE_30_EUR=5.0 APP_UNDERSUBSCRIPTION_SURCHARGE_30_CHF=5.0 APP_UNDERSUBSCRIPTION_SURCHARGE_40_EUR=2.5 APP_UNDERSUBSCRIPTION_SURCHARGE_40_CHF=2.5 # Booking Configuration # Status for new bookings: 'F' (Fixed/Final), 'O' (Option - requires agency confirmation) # Use 'O' during beta phase, switch to 'F' for production DEFAULT_BOOKING_STATUS=F SFTP_XML_SOURCE_HOST= SFTP_XML_SOURCE_PORT= SFTP_XML_SOURCE_USER= SFTP_XML_SOURCE_PASSWORD= SFTP_XML_SOURCE_ROOT= ###> league/oauth2-server-bundle ### OAUTH_PRIVATE_KEY=%kernel.project_dir%/config/secret/private.key OAUTH_PUBLIC_KEY=%kernel.project_dir%/config/secret/public.key OAUTH_ENCRYPTION_KEY=580084fd179e67399467f59ee96658ac ###< league/oauth2-server-bundle ### ###> symfony/lock ### # Choose one of the stores below # postgresql+advisory://db_user:db_password@localhost/db_name LOCK_DSN=flock ###< symfony/lock ### MAINTENANCE_MODE_ENABLED=false MAINTENANCE_MODE_IP_WHITELIST=188.245.62.21 MAINTENANCE_MODE_ROUTE_WHITELIST= MAINTENANCE_MODE_PATH_WHITELIST=/api,/token