Files
2025-11-14 14:42:44 +01:00

151 lines
4.9 KiB
Elixir

# 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 :wanderer_app, WandererApp.Cache,
# When using :shards as backend
# backend: :shards,
# GC interval for pushing new generation: 12 hrs
gc_interval: :timer.hours(12),
# Max 1 million entries in cache
max_size: 1_000_000,
# Max 2 GB of memory
allocated_memory: 2_000_000_000,
# GC min timeout: 10 sec
gc_cleanup_min_timeout: :timer.seconds(10),
# GC max timeout: 10 min
gc_cleanup_max_timeout: :timer.minutes(10)
config :wanderer_app,
ecto_repos: [WandererApp.Repo],
ash_domains: [WandererApp.Api],
generators: [timestamp_type: :utc_datetime],
ddrt: WandererApp.Map.CacheRTree,
logger: Logger,
pubsub_client: Phoenix.PubSub
config :wanderer_app, WandererAppWeb.Endpoint,
adapter: Bandit.PhoenixAdapter,
url: [host: "localhost"],
render_errors: [
formats: [html: WandererAppWeb.ErrorHTML, json: WandererAppWeb.ErrorJSON],
layout: false
],
pubsub_server: WandererApp.PubSub,
live_view: [signing_salt: "LjxzzFQ1"]
config :ueberauth, Ueberauth,
providers: [
eve:
{WandererApp.Ueberauth.Strategy.Eve,
[
default_scope:
"esi-location.read_location.v1 esi-location.read_ship_type.v1 esi-location.read_online.v1 esi-ui.write_waypoint.v1 esi-search.search_structures.v1",
wallet_scope:
"esi-location.read_location.v1 esi-location.read_ship_type.v1 esi-location.read_online.v1 esi-ui.write_waypoint.v1 esi-search.search_structures.v1 esi-wallet.read_character_wallet.v1",
admin_scope:
"esi-location.read_location.v1 esi-location.read_ship_type.v1 esi-location.read_online.v1 esi-ui.write_waypoint.v1 esi-search.search_structures.v1 esi-wallet.read_character_wallet.v1 esi-wallet.read_corporation_wallets.v1 esi-mail.send_mail.v1",
callback_path: "/auth/eve/callback"
]}
]
config :wanderer_app, WandererApp.Mailer, adapter: Swoosh.Adapters.Local
config :dart_sass, :version, "1.54.5"
config :tailwind, :version, "3.2.7"
config :wanderer_app, WandererApp.PromEx, manual_metrics_start_delay: :no_delay
config :wanderer_app,
grafana_datasource_id: "wanderer"
config :phoenix_ddos,
protections: [
# ip rate limit
{PhoenixDDoS.IpRateLimit, allowed: 10_000, period: {1, :minute}},
{PhoenixDDoS.IpRateLimit, allowed: 1_000_000, period: {1, :hour}},
# ip rate limit on specific request_path
{PhoenixDDoS.IpRateLimitPerRequestPath,
request_paths: ["/auth/eve"], allowed: 100, period: {1, :minute}}
]
config :ash_pagify,
default_limit: 50,
max_limit: 1000,
scopes: %{
role: []
},
reset_on_filter?: true,
replace_invalid_params?: true,
pagination: [opts: {WandererAppWeb.CoreComponents, :pagination_opts}],
table: [opts: {WandererAppWeb.CoreComponents, :table_opts}]
# Configures Elixir's Logger
config :logger, :console,
format: "$time $metadata[$level] $message\n",
metadata: [:application, :module, :function, :line, :request_id]
# Use Jason for JSON parsing in Phoenix
config :phoenix, :json_library, Jason
config :error_tracker,
repo: WandererApp.Repo,
otp_app: :wanderer_app
# Security Audit Configuration
config :wanderer_app, WandererApp.SecurityAudit,
enabled: true,
# Set to true in production for better performance
async: false,
batch_size: 100,
flush_interval: 5000,
log_level: :info,
threat_detection: %{
enabled: true,
max_failed_attempts: 5,
max_permission_denials: 10,
window_seconds: 300,
bulk_operation_threshold: 10000
},
retention_days: 90
config :git_ops,
mix_project: Mix.Project.get!(),
changelog_file: "CHANGELOG.md",
repository_url: "https://github.com/wanderer-industries/wanderer",
types: [
# Makes an allowed commit type called `tidbit` that is not
# shown in the changelog
tidbit: [
hidden?: true
],
# Makes an allowed commit type called `important` that gets
# a section in the changelog with the header "Important Changes"
important: [
header: "Important Changes"
]
],
tags: [
# Only add commits to the changelog that has the "backend" tag
allowed: ["feat", "fix", "docs"],
# Filter out or not commits that don't contain tags
allow_untagged?: true
],
# Instructs the tool to manage your mix version in your `mix.exs` file
# See below for more information
manage_mix_version?: true,
# Instructs the tool to manage the version in your README.md
# Pass in `true` to use `"README.md"` or a string to customize
manage_readme_version: "README.md",
version_tag_prefix: "v"
# 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"