# This file is responsible for configuring your application # and its dependencies with the aid of the Config module. # # This configuration file is loaded before any dependency and # is restricted to this project. # General application configuration import Config config :da_product_app, DaProductApp.Repo, migration_primary_key: [name: :id, type: :bigint, options: "AUTO_INCREMENT"] config :da_product_app, :env, Mix.env() config :da_product_app, ecto_repos: [DaProductApp.Repo], generators: [timestamp_type: :utc_datetime, binary_id: false] # ISO8583 Switch Configuration config :da_product_app, :switch, port: 8583, acceptors: 100, max_connections: 1000 # TPDU Configuration config :da_product_app, :tpdu, patterns: [ # Mercury Device TPDU patterns %{pattern: <<0x60, 0x00, 0x78, 0x20, 0x00>>, length: 5, description: "Mercury Device TPDU"}, %{pattern: <<0x60, 0x00, 0x78, 0x00, 0x00>>, length: 5, description: "Alternative Mercury TPDU"}, # YSP TPDU patterns %{pattern: <<0x30, 0x22>>, length: 2, description: "YSP ADR TPDU"}, # Add more patterns as needed # %{pattern: <<0x12, 0x34, 0x56, 0x78>>, length: 4, description: "Example 4-byte TPDU"} ] # Configures the endpoint config :da_product_app, DaProductAppWeb.Endpoint, url: [host: "localhost"], adapter: Bandit.PhoenixAdapter, render_errors: [ formats: [html: DaProductAppWeb.ErrorHTML, json: DaProductAppWeb.ErrorJSON], layout: false ], pubsub_server: DaProductApp.PubSub, live_view: [signing_salt: "Rs4sgrNR"] #config :oban, # name: Oban, # repo: DaProductApp.Repo, # engine: Oban.Engines.Basic, # Use Basic Engine instead of Postgres # queues: [default: 10], # Define your queues # notifier: Oban.Notifiers.Null, # Disable PostgreSQL-based notifier # peer: false # Configures the mailer # # By default it uses the "Local" adapter which stores the emails # locally. You can see the emails in your browser, at "/dev/mailbox". # # For production it's recommended to configure a different adapter # at the `config/runtime.exs`. config :da_product_app, DaProductApp.Mailer, adapter: Swoosh.Adapters.Local # Configure esbuild (the version is required) config :esbuild, version: "0.17.11", da_product_app: [ args: ~w(js/app.js --bundle --target=es2017 --outdir=../priv/static/assets --external:/fonts/* --external:/images/*), cd: Path.expand("../assets", __DIR__), env: %{"NODE_PATH" => Path.expand("../deps", __DIR__)} ] # Configure tailwind (the version is required) config :tailwind, version: "3.4.3", da_product_app: [ args: ~w( --config=tailwind.config.js --input=css/app.css --output=../priv/static/assets/app.css ), cd: Path.expand("../assets", __DIR__) ] # Configures Elixir's Logger config :logger, :console, format: "$date $time $metadata[$level] $message\n", metadata: [:request_id] # Use Jason for JSON parsing in Phoenix config :phoenix, :json_library, Jason config :da_product_app, Oban, repo: DaProductApp.Repo, engine: Oban.Engines.Dolphin, queues: [default: 10, mailers: 20, high: 50, low: 5, file_download: 10, parameter_push: 10, app_package: 10], plugins: [ {Oban.Plugins.Pruner, max_age: (3600 * 24)}, {Oban.Plugins.Cron, crontab: [ # {"0 2 * * *", DaProductApp.Workers.DailyDigestWorker}, # {"@reboot", DaProductApp.Workers.StripeSyncWorker}, # {"0 2 * * *", DaProductApp.DailyReports.DailyReportWorker}, ]} ] config :da_product_app, :qr_providers, %{ "alipay" => DaProductApp.QRProviders.Alipay, "wechat" => DaProductApp.QRProviders.WeChat, "aani" => DaProductApp.QRProviders.Aani } # ISO8583 Switch Configuration config :da_product_app, :switch, master: [ host: "mastercard-switch.example.com", port: 7001, timeout: 30_000, connect_timeout: 5_000 ], visa: [ host: "visa-switch.example.com", port: 7002, timeout: 30_000, connect_timeout: 5_000 ], listener: [ port: 5000, max_connections: 100 ] # Custom MIME types for file uploads config :mime, :types, %{ "application/vnd.android.package-archive" => ["apk"], "application/octet-stream" => ["bin"] } # Enhanced Architecture Configuration import_config "incoming_listeners.exs" import_config "upstream_networks.exs" import_config "processor_pipelines.exs" import_config "async_correlator.exs" import_config "event_listeners.exs" import_config "health_monitoring.exs" # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. import_config "#{config_env()}.exs"