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 RepositoryPlug
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 RepositoryDatabase & 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 RepositoryPostgrex
PostgreSQL driver for Elixir. Works seamlessly with Ecto and provides direct database connection management with connection pooling via DBConnection.
View RepositoryAuthentication & Authorization
Pow
Robust, modular, and extendable authentication solution. Supports email confirmation, password reset, and integrates easily with Phoenix applications. Highly customizable.
View RepositoryGuardian
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 RepositoryBodyguard
Simple authorization conventions for Phoenix apps. Promotes a clear separation of concerns and lets you define authorization rules directly in your context modules.
View RepositoryUeberauth
An authentication framework for Plug-based applications. Provides OAuth integration with Google, GitHub, Facebook, and many other providers through strategy plugins.
View RepositorySwoosh
Compose, deliver, and test emails easily. Supports multiple adapters including SendGrid, Mailgun, Postmark, and SMTP. Includes a local mailbox for development testing.
View RepositoryBamboo
Composable, testable, and adapter-based email library. Features include easy testing, email preview in development, and support for various email services.
View RepositoryBackground 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 RepositoryExq
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 RepositoryQuantum
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 RepositoryFile Upload & Storage
Waffle
Flexible file upload and attachment library. Supports local filesystem, S3, and custom storage backends. Includes image processing capabilities via ImageMagick.
View RepositoryExAws
AWS client library for Elixir. Provides access to S3, DynamoDB, and other AWS services. Works great with Waffle for cloud storage integration.
View RepositoryTesting
ExUnit
Built-in unit testing framework for Elixir. Fast, concurrent test execution, descriptive failure messages, and excellent documentation. No additional installation needed.
View DocumentationWallaby
Concurrent feature tests for Elixir and Phoenix. Write browser-based integration tests with a clean DSL. Supports ChromeDriver and PhantomJS.
View RepositoryMox
Library for defining concurrent mocks in Elixir. Follows best practices for mocking and makes it easy to write isolated, concurrent tests.
View RepositoryExVCR
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 RepositoryAPI & 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 RepositoryJSONAPI
Fully compliant JSONAPI implementation for Plug and Phoenix applications. Handles serialization, deserialization, and relationship loading according to the JSONAPI spec.
View RepositoryMonitoring & 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 RepositoryPhoenix LiveDashboard
Real-time performance monitoring and debugging tool built with Phoenix LiveView. Displays metrics, application info, OS data, and Ecto stats.
View RepositoryAppSignal
Application performance monitoring specifically designed for Elixir. Track errors, performance bottlenecks, and custom metrics with beautiful dashboards.
View RepositorySentry
Error tracking and monitoring for Elixir applications. Captures exceptions, tracks releases, and provides detailed error reports with context and stack traces.
View RepositoryCaching
Cachex
Powerful in-memory caching library with many advanced features. Supports TTL, LRW eviction, streaming, transactions, and distributed caching capabilities.
View RepositoryNebulex
Fast, flexible, and extensible caching library with support for multiple adapters including in-memory, Redis, and multi-level caches. Great for distributed systems.
View RepositoryReal-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 RepositoryPhoenix Channels
Scalable real-time communication using WebSockets. Built into Phoenix, it makes building chat apps, notifications, and collaborative features straightforward.
View DocumentationHTTP 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 RepositoryHTTPoison
Popular HTTP client based on hackney. Simple API, supports streaming, async requests, and has been battle-tested in production for years.
View RepositoryTesla
Flexible HTTP client with middleware support. Easy to configure and extend with custom behavior, retries, logging, and more. Adapter-based architecture.
View RepositorySerialization & Validation
Jason
Blazing fast JSON parser and generator. Pure Elixir implementation with excellent performance. The default JSON library for Phoenix applications.
View RepositoryVex
Data validation library with a clean DSL. Define validation rules directly in your structs and get detailed error messages. Extensible with custom validators.
View RepositoryRate Limiting & Throttling
Hammer
Rate limiting library with multiple backend options. Supports Redis, ETS, and Mnesia. Perfect for API rate limiting and preventing abuse.
View RepositoryPlugAttack
Plug middleware for rate limiting and blocking malicious requests. Flexible rule system and works great with Phoenix applications.
View RepositoryConfiguration & Environment
Dotenv
Load environment variables from .env files. Useful for development environments where you want to keep secrets out of version control.
View RepositoryConfex
Configuration reader that supports environment variables and provides runtime configuration. Helps manage secrets and configuration across different environments.
View RepositoryDeployment & 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 DocumentationDistillery
Advanced release management tool for Elixir. While Mix Release is now recommended, Distillery offers additional features for complex deployment scenarios.
View RepositorySearch & Indexing
Elasticsearch
Elasticsearch client for Elixir. Provides a simple interface for indexing and searching documents. Great for full-text search functionality.
View RepositoryAlgolia Elixir
Official Algolia client for Elixir. Integrate powerful hosted search into your application with faceting, typo-tolerance, and instant search results.
View Repository