Elixir Full Stack

Discover the Best Tools for Elixir Development

A comprehensive collection of frameworks, libraries, and tools to enhance your Elixir development experience.

Web Frameworks

Phoenix Framework

Phoenix Framework

A productive web framework that does not compromise speed or maintainability.

MVC Real-time LiveView
mix phx.new my_app
Visit Website
Plug

Plug

A specification for composable modules in web applications.

Middleware HTTP
defmodule MyPlug do
  use Plug.Builder
  plug :set_header
  def set_header(conn, _), do: put_resp_header(conn, "x-hello", "world")
end
Visit Website
Bandit

Bandit

A HTTP server for Plug apps with HTTP/2 support.

HTTP/2 Server
{:bandit, "~> 0.7.7"}
Visit Website

Database Tools

Ecto

Ecto

A database wrapper and language integrated query for Elixir.

ORM Query Builder
from u in User,
  where: u.age > 18,
  select: u.name
Visit Website
Postgrex

Postgrex

PostgreSQL driver for Elixir.

PostgreSQL Driver
{:postgrex, ">= 0.0.0"}
Visit Website
Oban

Oban

Robust job processing in Elixir, backed by PostgreSQL.

Job Queue Background Jobs
%{email: "user@example.com"}
|> MyApp.Workers.SendEmail.new()
|> Oban.insert()
Visit Website

Testing Tools

ExUnit

ExUnit

Built-in test framework for Elixir.

Unit Testing Built-in
test "greets the world" do
  assert Hello.world() == :world
end
Visit Website
Mox

Mox

Library for defining concurrent mocks in Elixir.

Mocking Behavior Testing
Mox.expect(PaymentMock, :process, fn amount -> {:ok, amount} end)
Visit Website
Wallaby

Wallaby

Concurrent browser tests for your Elixir web applications.

Browser Testing Integration Tests
session
|> visit("/login")
|> fill_in(Query.text_field("Username"), with: "user")
|> click(Query.button("Submit"))
Visit Website

Deployment Tools

Distillery

Distillery

A release packaging tool for Elixir and Erlang applications.

Releases Deployment
mix release.init
mix release
Visit Website
Elixir Releases

Elixir Releases

Built-in release manager for Elixir applications.

Built-in Releases
mix release
_build/prod/rel/my_app/bin/my_app start
Visit Website
Docker

Docker

Containerization platform for Elixir applications.

Containers Deployment
FROM elixir:1.14-alpine
WORKDIR /app
COPY . .
RUN mix do deps.get, compile
Visit Website

IDE & Editor Tools

VS Code ElixirLS

VS Code ElixirLS

Elixir language server for Visual Studio Code.

VS Code Language Server
Features:
- Auto-completion
- Go to definition
- Code formatting
Visit Website
IntelliJ Elixir

IntelliJ Elixir

Elixir plugin for IntelliJ IDEA and other JetBrains IDEs.

IntelliJ Plugin
Features:
- Syntax highlighting
- Code navigation
- Run configurations
Visit Website
Emacs Alchemist

Emacs Alchemist

Elixir tooling integration for Emacs.

Emacs Editor
Features:
- Mix integration
- IEx integration
- Testing tools
Visit Website

Monitoring Tools

Telemetry

Telemetry

Dynamic dispatching library for metrics and instrumentations.

Metrics Instrumentation
:telemetry.execute([:web, :request], %{duration: duration}, %{path: path})
Visit Website
AppSignal

AppSignal

Application monitoring for Elixir applications.

Monitoring Error Tracking
Appsignal.set_gauge("memory", memory_usage)
Appsignal.increment_counter("login_count", 1)
Visit Website
Prometheus

Prometheus

Monitoring system and time series database for Elixir.

Metrics Monitoring
counter = :prometheus_counter.new([
  name: :http_requests_total,
  help: "Total number of HTTP requests"
])
Visit Website

Package Management

Mix

Mix

Build tool that provides tasks for creating, compiling, and testing Elixir projects.

Build Tool Built-in
mix new my_app
mix deps.get
mix compile
mix test
Visit Website
Hex

Hex

Package manager for the Erlang ecosystem.

Package Manager Registry
mix hex.info phoenix
mix hex.publish
Visit Website
Rebar3

Rebar3

Erlang build tool that can be used with Elixir projects.

Erlang Build Tool
rebar3 compile
rebar3 release
Visit Website