Web Frameworks
Phoenix Framework
A productive web framework that does not compromise speed or maintainability.
mix phx.new my_app
Plug
A specification for composable modules in web applications.
defmodule MyPlug do
use Plug.Builder
plug :set_header
def set_header(conn, _), do: put_resp_header(conn, "x-hello", "world")
end
Bandit
A HTTP server for Plug apps with HTTP/2 support.
{:bandit, "~> 0.7.7"}
Database Tools
Ecto
A database wrapper and language integrated query for Elixir.
from u in User,
where: u.age > 18,
select: u.name
Oban
Robust job processing in Elixir, backed by PostgreSQL.
%{email: "user@example.com"}
|> MyApp.Workers.SendEmail.new()
|> Oban.insert()
Testing Tools
ExUnit
Built-in test framework for Elixir.
test "greets the world" do
assert Hello.world() == :world
end
Mox
Library for defining concurrent mocks in Elixir.
Mox.expect(PaymentMock, :process, fn amount -> {:ok, amount} end)
Wallaby
Concurrent browser tests for your Elixir web applications.
session
|> visit("/login")
|> fill_in(Query.text_field("Username"), with: "user")
|> click(Query.button("Submit"))
Deployment Tools
Distillery
A release packaging tool for Elixir and Erlang applications.
mix release.init
mix release
Elixir Releases
Built-in release manager for Elixir applications.
mix release
_build/prod/rel/my_app/bin/my_app start
Docker
Containerization platform for Elixir applications.
FROM elixir:1.14-alpine
WORKDIR /app
COPY . .
RUN mix do deps.get, compile
IDE & Editor Tools
VS Code ElixirLS
Elixir language server for Visual Studio Code.
Features:
- Auto-completion
- Go to definition
- Code formatting
IntelliJ Elixir
Elixir plugin for IntelliJ IDEA and other JetBrains IDEs.
Features:
- Syntax highlighting
- Code navigation
- Run configurations
Emacs Alchemist
Elixir tooling integration for Emacs.
Features:
- Mix integration
- IEx integration
- Testing tools
Monitoring Tools
Telemetry
Dynamic dispatching library for metrics and instrumentations.
:telemetry.execute([:web, :request], %{duration: duration}, %{path: path})
AppSignal
Application monitoring for Elixir applications.
Appsignal.set_gauge("memory", memory_usage)
Appsignal.increment_counter("login_count", 1)
Prometheus
Monitoring system and time series database for Elixir.
counter = :prometheus_counter.new([
name: :http_requests_total,
help: "Total number of HTTP requests"
])
Package Management
Mix
Build tool that provides tasks for creating, compiling, and testing Elixir projects.
mix new my_app
mix deps.get
mix compile
mix test
Hex
Package manager for the Erlang ecosystem.
mix hex.info phoenix
mix hex.publish
Rebar3
Erlang build tool that can be used with Elixir projects.
rebar3 compile
rebar3 release