# Loco configuration file documentation # Application logging configuration logger: # Enable or disable logging. enable: true # Enable pretty backtrace (sets RUST_BACKTRACE=1) pretty_backtrace: true # Log level, options: trace, debug, info, warn or error. level: debug # Define the logging format. options: compact, pretty or json format: compact # By default the logger has filtering only logs that came from your code or logs that came from `loco` framework. to see all third party libraries # Uncomment the line below to override to see all third party libraries you can enable this config and override the logger filters. # override_filter: trace # Web server configuration server: # Port on which the server will listen. the server binding is 0.0.0.0:{PORT} port: 5150 # Binding for the server (which interface to bind to) binding: localhost # The UI hostname or IP address that mailers will point to. host: http://localhost # Out of the box middleware configuration. to disable middleware you can changed the `enable` field to `false` of comment the middleware block middlewares: static: enable: true must_exist: true precompressed: false folder: uri: "/static" path: "assets/static" fallback: "assets/static/404.html" # Worker Configuration workers: # specifies the worker mode. Options: # - BackgroundQueue - Workers operate asynchronously in the background, processing queued. # - ForegroundBlocking - Workers operate in the foreground and block until tasks are completed. # - BackgroundAsync - Workers operate asynchronously in the background, processing tasks with async capabilities. mode: BackgroundAsync # Mailer Configuration. mailer: # SMTP mailer configuration. smtp: # Enable/Disable smtp mailer. enable: true # SMTP server host. e.x localhost, smtp.gmail.com host: localhost # SMTP server port port: 1025 # Use secure connection (SSL/TLS). secure: false # auth: # user: # password: # Override the SMTP hello name (default is the machine's hostname) # hello_name: # Initializers Configuration # initializers: # oauth2: # authorization_code: # Authorization code grant type # - client_identifier: google # Identifier for the OAuth2 provider. Replace 'google' with your provider's name if different, must be unique within the oauth2 config. # ... other fields # Database Configuration database: # Database connection URI uri: {{ get_env(name="DATABASE_URL", default="postgres://uni_loco_web_user:3@localhost:5432/kompress_eshop_development") }} # When enabled, the sql query will be logged. enable_logging: false # Set the timeout duration when acquiring a connection. connect_timeout: {{ get_env(name="DB_CONNECT_TIMEOUT", default="500") }} # Set the idle duration before closing a connection. idle_timeout: {{ get_env(name="DB_IDLE_TIMEOUT", default="500") }} # Minimum number of connections for a pool. min_connections: {{ get_env(name="DB_MIN_CONNECTIONS", default="1") }} # Maximum number of connections for a pool. max_connections: {{ get_env(name="DB_MAX_CONNECTIONS", default="1") }} # Run migration up when application loaded auto_migrate: true # Truncate database when application loaded. This is a dangerous operation, make sure that you using this flag only on dev environments or test mode dangerously_truncate: false # Recreating schema when application loaded. This is a dangerous operation, make sure that you using this flag only on dev environments or test mode dangerously_recreate: false # Authentication Configuration auth: # JWT authentication jwt: location: - from: Cookie name: auth_token - from: Bearer # Secret key for token generation and verification secret: A6ECni63rt2Jb00tX9Hf # Token expiration time in seconds expiration: 604800 # 7 days settings: admin_email: {{ get_env(name="ADMIN_EMAIL", default="admin@example.com") }} uploads_root: {{ get_env(name="UPLOADS_ROOT", default="uploads") }} # Packeta (Zásilkovna) web API key for the pickup-point picker widget. # Empty falls back to a plain text field for the pickup point. packeta_api_key: {{ get_env(name="PACKETA_API_KEY", default="") }} # Packeta REST API secret + sender label, used by admin "Send to carrier" # (manual shipment creation). See docs/integrations/packeta.md. packeta_api_password: {{ get_env(name="PACKETA_API_PASSWORD", default="") }} packeta_sender_label: {{ get_env(name="PACKETA_SENDER_LABEL", default="") }} # DPD shipment API (see docs/integrations/dpd.md). Empty = not configured. dpd_api_base: {{ get_env(name="DPD_API_BASE", default="") }} dpd_login: {{ get_env(name="DPD_LOGIN", default="") }} dpd_password: {{ get_env(name="DPD_PASSWORD", default="") }} dpd_customer_number: {{ get_env(name="DPD_CUSTOMER_NUMBER", default="") }} # DHL shipment API (see docs/integrations/dhl.md). Empty = not configured. dhl_api_base: {{ get_env(name="DHL_API_BASE", default="") }} dhl_api_key: {{ get_env(name="DHL_API_KEY", default="") }} dhl_api_secret: {{ get_env(name="DHL_API_SECRET", default="") }} dhl_account_number: {{ get_env(name="DHL_ACCOUNT_NUMBER", default="") }} # Bank-transfer payment details shown on the order confirmation. bank_iban: {{ get_env(name="BANK_IBAN", default="SK00 0000 0000 0000 0000 0000") }} bank_account_name: {{ get_env(name="BANK_ACCOUNT_NAME", default="Kompress s.r.o.") }} # loco-oauth2: social login. Credentials come from .env (create them in the # Google Cloud console and register the redirect_url below as an authorized # redirect URI). Until OAUTH_CLIENT_ID/SECRET are set, the "Continue with # Google" button will fail at the consent screen — the rest of auth is unaffected. initializers: oauth2: # Key for the loco-oauth2 private cookie jar (>= 64 bytes). Override in prod. secret_key: {{ get_env(name="OAUTH_PRIVATE_KEY", default="144, 76, 183, 1, 15, 184, 233, 174, 214, 251, 190, 186, 122, 61, 74, 84, 225, 110, 189, 115, 10, 251, 133, 128, 52, 46, 15, 66, 85, 1, 245, 73, 27, 113, 189, 15, 209, 205, 61, 100, 73, 31, 18, 58, 235, 105, 141, 36, 70, 92, 231, 151, 27, 32, 243, 117, 30, 244, 110, 89, 233, 196, 137, 130") }} authorization_code: - client_identifier: google client_credentials: client_id: {{ get_env(name="OAUTH_CLIENT_ID", default="oauth_client_id") }} client_secret: {{ get_env(name="OAUTH_CLIENT_SECRET", default="oauth_client_secret") }} url_config: auth_url: {{ get_env(name="OAUTH_AUTH_URL", default="https://accounts.google.com/o/oauth2/auth") }} token_url: {{ get_env(name="OAUTH_TOKEN_URL", default="https://www.googleapis.com/oauth2/v3/token") }} redirect_url: {{ get_env(name="OAUTH_REDIRECT_URL", default="http://localhost:5150/api/oauth2/google/callback/cookie") }} profile_url: {{ get_env(name="OAUTH_PROFILE_URL", default="https://openidconnect.googleapis.com/v1/userinfo") }} scopes: - "https://www.googleapis.com/auth/userinfo.email" - "https://www.googleapis.com/auth/userinfo.profile" cookie_config: # After loco-oauth2 sets its session cookie it redirects here, where we # mint our own auth_token cookie (see controllers/oauth2.rs::complete). protected_url: {{ get_env(name="OAUTH_PROTECTED_URL", default="http://localhost:5150/api/oauth2/protected") }} timeout_seconds: 600