Packages
Production-grade Elixir client for the Railsr Embedded Finance API (Endusers, Ledgers, Cards, Transactions, Beneficiaries, Direct Debit, Compliance Firewall, Webhooks).
Current section
Files
Jump to
Current section
Files
mix.exs
defmodule Railsr.MixProject do
use Mix.Project
@version "1.0.0"
@source_url "https://github.com/iamkanishka/railsr"
@description """
Production-grade Elixir client for the Railsr Embedded Finance API
(Endusers, Ledgers, Cards, Transactions, Beneficiaries, Direct Debit,
Compliance Firewall, Webhooks).
"""
def project do
[
app: :railsr,
version: @version,
elixir: "~> 1.18",
start_permanent: Mix.env() == :prod,
deps: deps(),
aliases: aliases(),
dialyzer: dialyzer(),
test_coverage: [tool: ExCoveralls],
preferred_cli_env: [
coveralls: :test,
"coveralls.detail": :test,
"coveralls.post": :test,
"coveralls.html": :test
],
# Hex metadata
description: @description,
package: package(),
name: "Railsr",
source_url: @source_url,
homepage_url: @source_url,
# Docs
docs: docs()
]
end
def application do
[
extra_applications: [:logger, :crypto],
mod: {Railsr.Application, []}
]
end
defp deps do
[
# HTTP client
{:req, "~> 0.5"},
# JSON
{:jason, "~> 1.4"},
# Retry / resiliency
{:retry, "~> 0.18"},
# Telemetry
{:telemetry, "~> 1.2"},
{:telemetry_metrics, "~> 1.0"},
# Config validation
{:nimble_options, "~> 1.1"},
# Dev / test
{:ex_doc, "~> 0.40", only: :dev, runtime: false},
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:excoveralls, "~> 0.18", only: :test},
{:mox, "~> 1.1", only: :test},
{:bypass, "~> 2.1", only: :test},
{:stream_data, "~> 1.1", only: :test}
]
end
defp aliases do
[
setup: ["deps.get", "deps.compile"],
ci: ["format --check-formatted", "credo --strict", "dialyzer", "test --cover"]
]
end
defp dialyzer do
[
plt_file: {:no_warn, "priv/plts/dialyzer.plt"},
plt_add_apps: [:mix, :ex_unit],
flags: [:error_handling, :missing_return, :underspecs]
]
end
defp package do
[
maintainers: ["Kanishka Naik"],
licenses: ["MIT"],
links: %{
"GitHub" => @source_url,
"Railsr Docs" => "https://docs.railsr.com"
},
files: ~w(lib mix.exs README.md LICENSE CHANGELOG.md)
]
end
defp docs do
[
main: "readme",
source_url: @source_url,
source_ref: "v#{@version}",
extras: ["README.md", "CHANGELOG.md", "LICENSE"],
groups_for_modules: [
Core: [Railsr, Railsr.Client, Railsr.Config],
Authentication: [Railsr.Auth, Railsr.Auth.TokenCache],
"HTTP Layer": [Railsr.HTTP],
Resources: [
Railsr.Resources.Endusers,
Railsr.Resources.Ledgers,
Railsr.Resources.Transactions,
Railsr.Resources.Beneficiaries,
Railsr.Resources.Cards,
Railsr.Resources.Mandates,
Railsr.Resources.Payments,
Railsr.Resources.Firewall,
Railsr.Resources.Webhooks,
Railsr.Resources.Customer
],
Middleware: [
Railsr.Middleware.RateLimiter,
Railsr.Middleware.CircuitBreaker
],
Telemetry: [Railsr.Telemetry],
Types: [Railsr.Types],
Errors: [Railsr.Error]
]
]
end
end