(last updated:
)
Recommended Elixir Resources
I’m often asked about good starting points for learning Elixir. This list brings together tools, libraries, and books you’re likely to encounter when diving into Elixir for the first time.
Installation
- asdf version manager - The most straightforward method for installing Elixir, suitable for those who want a simple start.
- Elixir Dev Environment With Nix Flakes - This article guides you through setting up Elixir in a Nix-based environment. If you are unfamiliar with Nix, you should choose another installation method.
- Official getting started guide - Describes other installation options.
Basics
- Official Elixir guides - This is the recommended starting point. The official Elixir guides, along with those for major libraries, are generally well-written and provide a solid introduction.
- Elixir School - Starts with the language fundamentals, but has a broader choice of topics, including introductions to some commonly used libraries. Their tutorials are available in multiple languages.
Books
General Learning
- Programming Elixir 1.6 (Dave Thomas) - A still-relevant introduction to Elixir fundamentals, recommended after reading the official guides.
- Elixir in Action (Saša Jurić) - Starts with language basics and incrementally builds an entire OTP application, offering an excellent primer on concurrent programming in Elixir.
Web Development
- Programming Phoenix LiveView (Bruce A. Tate, Sophie DeBenedetto) - A good resource for Phoenix LiveView. Recommended after reading the official Phoenix and LiveView guides.
- Real-Time Phoenix - Focuses on real-time applications using Phoenix Channels.
API Development
- Craft GraphQL APIs in Elixir with Absinthe (Bruce Williams, Ben Wilson) - The definitive book for anyone planning to use GraphQL with Elixir.
Advanced Topics
- Designing Elixir Systems with OTP (James Edward Gray, II, Bruce A. Tate) - Delves into application architecture and OTP.
- Metaprogramming Elixir (Chris McCord) - “Rule 1: Don’t Write Macros. Rule 2: Use Macros Gratuitously.” If you’re set on diving into the complexities of Elixir’s metaprogramming, this book serves as a comprehensive guide.
- Erlang in Anger (Fred Hebert) - Although focused on Erlang, this book provides valuable and directly applicable insights for Elixir developers aiming to understand OTP and debugging OTP applications.
- Concurrent Data Processing in Elixir (Svilen Gospodinov) - A deep dive into data processing libraries like GenStage, Flow, and Broadway.
Libraries
Below you’ll find a curated list of some of the most frequently recommended and commonly used libraries in the Elixir ecosystem. Alongside these, I’ve also slipped in a few of my own libraries for your consideration.
Web & API Development
- Phoenix - The de facto web framework for Elixir
- Phoenix LiveView - Enables rich, real-time user experiences with server-rendered HTML
- Absinthe - The go-to GraphQL toolkit for Elixir
Data & Persistence
- Ecto - Database wrapper and query generator, commonly employed as an alternative to traditional ORMs
- Ecto Nested Changeset - Manipulating nested Ecto changesets (mine)
Developer tools
- Credo - Linting
- ExCoveralls - Test coverage
- Dialyxir - Static code analysis
- Sobelow - Security-focused static analysis
- Benchee - Benchmarks
Testing & Mocking
- ExUnit - Default unit testing framework
- ExMachina - Test data generation
- Mox - Mocking
- Bypass - Bypass HTTP requests in tests
- ExVCR - HTTP request/response recording
- Wallaby - Browser e2e tests
Authentication & Authorization
- Guardian - Token-based authentication
- Überauth - Two-phase authentication framework
- Comeonin - Password hashing
- Let Me - Authorization DSL (mine)
- Bodyguard - Authorization
- Canada - Authorization
Data Processing & Job Management
- Broadway - Data ingestion and processing
- Oban - Job processing
- Exq - Job processing
- Quantum - Job scheduler
Network & Communication
- Tesla - HTTP client with support for several adapters
- Req - HTTP client
- Swoosh - Email composition and delivery
Caching
- Cachex - In-memory cache
- Nebulex - In-memory and distributed caching based on adapters and decorators
Pagination
- Flop - Applies filtering, ordering, and pagination parameters to Ecto queries (mine)
- Flop Phoenix - UI components for Flop, Phoenix, and Phoenix LiveView (mine)
Feature Management
- Fun with flags - Feature flags with different gate types and an optional web dashboard
Other Nice Things
- Livebook - Interactive Elixir notebooks, valuable for users at any level for language exploration, library experimentation, and delving into machine learning
- Nx - Numerical computing for Elixir