Elixir Full-Stack Reference

Your guide to building complete Elixir applications

Welcome to Elixir Full-Stack

This reference guide helps you choose the right tools and libraries for building complete Elixir applications. From web frameworks to databases, authentication to background jobs, find everything you need in one place.

Web Frameworks

Phoenix Framework

The most popular Elixir web framework. Built on top of Plug, it provides everything you need for productive web development including LiveView for real-time features without JavaScript.

View Repository

Plug

A specification and conveniences for composable modules between web applications. It's the foundation that Phoenix is built on and can be used standalone for lightweight APIs.

View Repository

Database & ORM

Ecto

A database wrapper and query generator for Elixir. Provides a way to create embedded schemas, write queries, validate changesets, and interact with databases like PostgreSQL and MySQL.

View Repository

Postgrex

PostgreSQL driver for Elixir. Works seamlessly with Ecto and provides direct database connection management with connection pooling via DBConnection.

View Repository

Authentication & Authorization

Pow

Robust, modular, and extendable authentication solution. Supports email confirmation, password reset, and integrates easily with Phoenix applications. Highly customizable.

View Repository

Guardian

Token-based authentication library for use with Elixir applications. Ideal for APIs, supports JWT tokens, refresh tokens, and provides hooks for custom token verification.

View Repository

Bodyguard

Simple authorization conventions for Phoenix apps. Promotes a clear separation of concerns and lets you define authorization rules directly in your context modules.

View Repository

Ueberauth

An authentication framework for Plug-based applications. Provides OAuth integration with Google, GitHub, Facebook, and many other providers through strategy plugins.

View Repository

Email

Swoosh

Compose, deliver, and test emails easily. Supports multiple adapters including SendGrid, Mailgun, Postmark, and SMTP. Includes a local mailbox for development testing.

View Repository

Bamboo

Composable, testable, and adapter-based email library. Features include easy testing, email preview in development, and support for various email services.

View Repository

Background Jobs & Task Processing

Oban

Robust job processing library backed by PostgreSQL. Features include scheduled jobs, retries, unique jobs, job prioritization, and a web dashboard. The go-to choice for background jobs.

View Repository

Exq

Job processing library compatible with Resque and Sidekiq, backed by Redis. Useful if you need to share job queues between Elixir and Ruby applications.

View Repository

Quantum

Cron-like job scheduler for Elixir. Define scheduled jobs in your configuration and Quantum will execute them at the specified times. Perfect for periodic tasks.

View Repository

File Upload & Storage

Waffle

Flexible file upload and attachment library. Supports local filesystem, S3, and custom storage backends. Includes image processing capabilities via ImageMagick.

View Repository

ExAws

AWS client library for Elixir. Provides access to S3, DynamoDB, and other AWS services. Works great with Waffle for cloud storage integration.

View Repository

Testing

ExUnit

Built-in unit testing framework for Elixir. Fast, concurrent test execution, descriptive failure messages, and excellent documentation. No additional installation needed.

View Documentation

Wallaby

Concurrent feature tests for Elixir and Phoenix. Write browser-based integration tests with a clean DSL. Supports ChromeDriver and PhantomJS.

View Repository

Mox

Library for defining concurrent mocks in Elixir. Follows best practices for mocking and makes it easy to write isolated, concurrent tests.

View Repository

ExVCR

Record and replay HTTP interactions for deterministic tests. Similar to Ruby's VCR gem, it helps test external API integrations without making real HTTP calls.

View Repository

API & GraphQL

Absinthe

The GraphQL toolkit for Elixir. Build GraphQL APIs with a clean DSL, supports subscriptions over Phoenix channels, batch resolution, and schema stitching.

View Repository

JSONAPI

Fully compliant JSONAPI implementation for Plug and Phoenix applications. Handles serialization, deserialization, and relationship loading according to the JSONAPI spec.

View Repository

Monitoring & Observability

Telemetry

Dynamic dispatching library for metrics and instrumentation. Standard way to emit and consume events in Elixir applications. Used by Phoenix, Ecto, and many libraries.

View Repository

Phoenix LiveDashboard

Real-time performance monitoring and debugging tool built with Phoenix LiveView. Displays metrics, application info, OS data, and Ecto stats.

View Repository

AppSignal

Application performance monitoring specifically designed for Elixir. Track errors, performance bottlenecks, and custom metrics with beautiful dashboards.

View Repository

Sentry

Error tracking and monitoring for Elixir applications. Captures exceptions, tracks releases, and provides detailed error reports with context and stack traces.

View Repository

Caching

Cachex

Powerful in-memory caching library with many advanced features. Supports TTL, LRW eviction, streaming, transactions, and distributed caching capabilities.

View Repository

Nebulex

Fast, flexible, and extensible caching library with support for multiple adapters including in-memory, Redis, and multi-level caches. Great for distributed systems.

View Repository

Real-time & WebSockets

Phoenix LiveView

Build rich, real-time user experiences with server-rendered HTML. No need to write JavaScript for interactive features. Handles WebSocket connections automatically.

View Repository

Phoenix Channels

Scalable real-time communication using WebSockets. Built into Phoenix, it makes building chat apps, notifications, and collaborative features straightforward.

View Documentation

HTTP Clients

Finch

Modern HTTP client built on top of Mint. Provides connection pooling, HTTP/2 support, and excellent performance. The recommended HTTP client for new projects.

View Repository

HTTPoison

Popular HTTP client based on hackney. Simple API, supports streaming, async requests, and has been battle-tested in production for years.

View Repository

Tesla

Flexible HTTP client with middleware support. Easy to configure and extend with custom behavior, retries, logging, and more. Adapter-based architecture.

View Repository

Serialization & Validation

Jason

Blazing fast JSON parser and generator. Pure Elixir implementation with excellent performance. The default JSON library for Phoenix applications.

View Repository

Vex

Data validation library with a clean DSL. Define validation rules directly in your structs and get detailed error messages. Extensible with custom validators.

View Repository

Rate Limiting & Throttling

Hammer

Rate limiting library with multiple backend options. Supports Redis, ETS, and Mnesia. Perfect for API rate limiting and preventing abuse.

View Repository

PlugAttack

Plug middleware for rate limiting and blocking malicious requests. Flexible rule system and works great with Phoenix applications.

View Repository

Configuration & Environment

Dotenv

Load environment variables from .env files. Useful for development environments where you want to keep secrets out of version control.

View Repository

Confex

Configuration reader that supports environment variables and provides runtime configuration. Helps manage secrets and configuration across different environments.

View Repository

Deployment & Release

Mix Release

Built-in Elixir release tool. Creates self-contained releases with the BEAM VM. No additional dependencies needed for creating production releases.

View Documentation

Distillery

Advanced release management tool for Elixir. While Mix Release is now recommended, Distillery offers additional features for complex deployment scenarios.

View Repository

Search & Indexing

Elasticsearch

Elasticsearch client for Elixir. Provides a simple interface for indexing and searching documents. Great for full-text search functionality.

View Repository

Algolia Elixir

Official Algolia client for Elixir. Integrate powerful hosted search into your application with faceting, typo-tolerance, and instant search results.

View Repository