berrypod/config/config.exs
jamey b235219aee
All checks were successful
deploy / deploy (push) Successful in 3m42s
add dead link monitoring for outgoing content links
Scans page blocks and nav items for broken URLs (internal via DB
lookup, external via HTTP HEAD). Daily Oban cron at 03:30, plus
on-demand checks when pages are saved. Admin UI tab on redirects
page with re-check, ignore, and clickable source links.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 13:00:59 +00:00

110 lines
3.6 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 :berrypod, :scopes,
user: [
default: true,
module: Berrypod.Accounts.Scope,
assign_key: :current_scope,
access_path: [:user, :id],
schema_key: :user_id,
schema_type: :binary_id,
schema_table: :users,
test_data_fixture: Berrypod.AccountsFixtures,
test_setup_helper: :register_and_log_in_user
]
config :berrypod,
env: config_env(),
ecto_repos: [Berrypod.Repo],
generators: [timestamp_type: :utc_datetime, binary_id: true]
# Configures the endpoint
config :berrypod, BerrypodWeb.Endpoint,
url: [host: "localhost"],
adapter: Bandit.PhoenixAdapter,
render_errors: [
formats: [html: BerrypodWeb.ErrorHTML, json: BerrypodWeb.ErrorJSON],
layout: false
],
pubsub_server: Berrypod.PubSub,
live_view: [signing_salt: "HWdz7Vt8"]
# 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 :berrypod, Berrypod.Mailer, adapter: Swoosh.Adapters.Local
# Configure esbuild (the version is required)
config :esbuild,
version: "0.25.4",
berrypod: [
args:
~w(js/app.js --bundle --target=es2022 --outdir=../priv/static/assets/js --external:/fonts/* --external:/images/* --alias:@=.),
cd: Path.expand("../assets", __DIR__),
env: %{"NODE_PATH" => [Path.expand("../deps", __DIR__), Mix.Project.build_path()]}
],
berrypod_shop_css: [
args: ~w(css/shop.css --bundle --outdir=../priv/static/assets/css),
cd: Path.expand("../assets", __DIR__)
],
berrypod_admin_css: [
args: ~w(css/admin.css --bundle --outdir=../priv/static/assets/css),
cd: Path.expand("../assets", __DIR__)
]
# Configures Elixir's Logger
config :logger, :default_formatter,
format: "$time $metadata[$level] $message\n",
metadata: [:request_id, :oban_worker, :oban_queue]
# Use Jason for JSON parsing in Phoenix
config :phoenix, :json_library, Jason
# ex_money configuration for currency handling
config :ex_money, default_cldr_backend: Berrypod.Cldr
# Error tracking (stored in DB, auto-captures Phoenix/LiveView/Oban errors)
config :error_tracker,
repo: Berrypod.Repo,
otp_app: :berrypod,
plugins: [ErrorTracker.Plugins.Pruner]
# Stripe configuration
config :stripity_stripe, api_version: "2024-12-18.acacia"
# Oban configuration for background jobs
config :berrypod, Oban,
engine: Oban.Engines.Lite,
repo: Berrypod.Repo,
plugins: [
{Oban.Plugins.Pruner, max_age: 60},
{Oban.Plugins.Lifeline, rescue_after: :timer.minutes(5)},
{Oban.Plugins.Cron,
crontab: [
{"*/30 * * * *", Berrypod.Orders.FulfilmentStatusWorker},
{"0 */6 * * *", Berrypod.Sync.ScheduledSyncWorker},
{"0 3 * * *", Berrypod.Analytics.RetentionWorker},
{"0 4 * * *", Berrypod.Orders.AbandonedCartPruneWorker},
{"0 5 * * 1", Berrypod.Workers.RedirectPrunerWorker},
{"30 3 * * *", Berrypod.Workers.DeadLinkCheckerWorker},
{"0 2 * * *", Berrypod.Newsletter.CleanupWorker},
{"*/5 * * * *", Berrypod.Newsletter.ScheduledCampaignWorker}
]}
],
queues: [images: 2, sync: 1, checkout: 1, newsletter: 1]
# 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"