Elixir
Contents
Actors
Algorithms and Data structures
BlockingQueue is a simple queue implemented as a GenServer. It has a fixed maximum length established when it is created.
Elixir implementation of CLOPE: A Fast and Effective Clustering Algorithm for Transactional Data.
Closure Table for Elixir - a simple solution for storing and manipulating complex hierarchies. It provides in-memory and Ecto adapters.
Elixir library to generate combinations and permutations from Enumerable collection.
An Elixir implementation of the CONREC algorithm for topographic or isochrone maps.
Collision-resistant ids optimized for horizontal scaling and sequential lookup performance, written in Elixir.
Package providing functionality similar to Python's Pandas or R's data.frame().
A collection of protocols, implementations and wrappers to work with data structures.
A memoization macro (defmemo) for elixir using a genserver backing store.
Tree structure, hierarchy and ancestry for the ecto models.
Finite state machine pattern implemented on Elixir and adopted for Ecto.
A latency / fault tolerance library to help isolate your applications from an uncertain world of slow or failed services.
An Elixir library for generating struct constructors that handle external data with ease.
ExMatrix is a small library for working with matrices, originally developed for testing matrix multiplication in parallel.
Nif for xor_filters. 'Faster and Smaller Than Bloom and Cuckoo Filters'.
Indifferent access for Elixir maps/list/tuples with custom key conversion.
Isaac is an elixir module for ISAAC: a fast cryptographic random number generator.
A state machine library for structs in general, it integrates with Phoenix out of the box.
Coerce maps into structs. This is helpful e.g. when you interface a REST API and want to create a struct from the response.
A blazing fast matrix library for Elixir/Erlang with C implementation using CBLAS.
Elixir library extending Enum.minby/2, Enum.maxby/2 and Enum.minmaxby/2 to return a list of results instead of just one.
A navigation tree representation with helpers to generate HTML out of it.
Elixir library providing some handy parallel processing (execution) facilities that support configuring number of workers and timeout.
Parallel Execute (Parex) is an Elixir module for executing multiple (slow) processes in parallel.
Wraps :queue, with improved API and Inspect, Collectable and Enumerable protocol implementations.
Elixir library implementing rational numbers and math operations for them.
Adds Rational Numbers and allows them to be used in common arithmetic operations. Also supports conversion between Floats and Rational Numbers.
Implementation of the Rendezvous or Highest Random Weight (HRW) hashing algorithm in Elixir.
Elixir implementation of ROCK: A Robust Clustering Algorithm for Categorical Attributes.
Applications
A web-based document reader that connects to your cloud storage accounts using Phoenix/LiveView.
Consolex is a tool that allows you to attach a web based console to any mix project.
A “mess manager” developed in Elixir and provides a simple API to manage & document your stuff. (Docs).
A webhook receiver/inspector app, made using Phoenix and LiveView, it's basically a simplified version of webhook.site.
Medical Examination - application for register health check callbacks and represent their state via HTTP.
A simple cowboy web server written in Elixir to stack images. (Docs).
The Good Old game built with Elixir, Phoenix Framework, React and Redux.
Trello tribute done in Elixir, Phoenix Framework, React and Redux.
Deploys your favorite open source applications like airflow and airbyte in your own cloud account with just two commands. Written in Elixir and Phoenix Framework for server side, and React for frontend.
A real-time application for conducting Agile retrospectives at remoteretro.org written in Elixir/Phoenix/React.
Online estimation tool for Agile teams, written using Elixir Lang, Phoenix Framework and React.
An umbrella project to search startup jobs scraped from websites written in Elixir/Phoenix and React/Redux.
A composable, real time, cryptocurrency market data and trade execution toolkit.
Artificial Intelligence
AI and LLM toolkit for Ash applications. MCP server, MCP dev tools, vector embeddings, chat interfaces, and more.
An extensible Generative AI Completion API Wrapper with basic chat completion with tool use support provided for Gemini, Anthropic, OpenAI, and Mistral models. (Docs).
Autonomous agent framework for Elixir. Built for distributed, autonomous behavior and dynamic workflows.
Audio and Sounds
Authentication
A simple configurable identity/password authentication module (Compatible with Ecto/Phoenix).
Coherence is a full featured, configurable authentication system for Phoenix. (Docs).
The simplest way to add Google OAuth authentication ("Sign in with Google") to your Elixir/Phoenix app.
AWS Managed Streaming for Apache Kafka (MSK) IAM Authentication plugin for Broadway Kafka.
An extension to Guardian that tracks tokens in your application's database to prevent playback. (Docs).
Simple passwordless login or 2-factor / multi-factor authentication for Elixir.
Authorization
A simple authorization library that provides a friendly interface using declarative permission rules.
An authorization library for Elixir applications that restricts what resources the current user is allowed to access.
Behaviours and Interfaces
Benchmarking
Bittorrent
BSON
Build Tools
Caching
Locker is an Elixir wrapper for the locker Erlang library that provides some useful libraries that should make using locker a bit easier.
In-memory, distributable cache with pub/sub, JSON-query and consistency support.
A fast, flexible and extensible distributed and local caching library for Elixir.
Chatting
Cloud Infrastructure and Management
A self hostable platform for automation/UI driven Kubernetes; built in Elixir and Golang the entire UI is built with Phoenix Live View.
Cloud Computing library for Erlang (Amazon EC2, S3, SQS, SimpleDB, Mechanical Turk, ELB). (Docs).
A simple wrapper for the Fleet (CoreOS) API. Can be used with etcd tokens or via direct node URLs.
Kubernetes Elixir client with CRD support, multi-cluster support, pluggable auth, and configurable middleware.
Kubernetes client for Elixir, generated from the k8s open API specifications.
SideTask is an alternative to Task.Supervisor using Basho's sidejob library with parallelism and capacity limiting.
Code Analysis
A static code analysis tool with a focus on code consistency and teaching Elixir. (Docs).
A visual tool to help developers understand Elixir recompilation in their projects. (Code).
One task to efficiently run all code analysis & testing tools in an Elixir project.
Command Line Applications
Configuration
Helper module that provides a nice way to read environment configuration at runtime.
A simple Elixir parser for the same kind of files that Python's configparser library handles.
utility package for loading, validating and documenting your app's configuration variables from env, json and jsonc files at runtime and injecting them into your environment.
Read and inject configuration at runtime, and in release mode with support for multiple providers.
Supercharge your environment variables in Elixir. Parse and validate with compile time access guarantees, defaults, fallbacks and app pre-boot validations.
Cryptography
Password hashing (argon2, bcrypt, pbkdf2_sha512) library for Elixir.(https://hexdocs.pm/comeonin/api-reference.html).
RSASSA-PSS Public Key Cryptographic Signature Algorithm for Erlang.
Elixir wrapper for Erlang crypto and public_key modules. Provides sensible defaults for many crypto functions to make them easier to use.(Docs).
Allows implementation of Time-based One-Time Passwords (TOTP) for 2FA.
CSV
Data Visualization
Date and Time
Debugging
A toolbar for Phoenix projects to interactively debug code and display useful information about requests: logs, timelines, database queries etc.
Distributed tracing for Elixir with rate limiting and simple macro-based interface.
A simple one-line module that allows a more friendly debugging experience.
Visualize Elixir & Erlang nodes on the command line, it aims to help developers debug production systems.
The Debug module provides a simple helper interface for running Elixir code in the erlang graphical debugger.
Deployment
1-command setup & deploys to servers, with first-class support for Phoenix apps.
Bottler is a collection of tools that aims to help you generate releases, ship them to your servers, install them there, and get them live on production.
A project template to get started developing clustered Elixir applications for cloud environments.
Documentation
Domain-specific language
ECMAScript
Composable, testable and adapter based email library. Out of the box support for rendering with Phoenix and a plug for previewing sent emails in dev.
A meta-notification system; Echo checks notification preferences & dispatches notifications.
A generic Erlang SMTP server and client that can be extended via callback modules.
Library containing Email-related implementations in Elixir: dkim, spf, dmark, mimemail, smtp.
Mailman provides a clean way of defining mailers in your Elixir applications.
Smoothie inline styles of your email templates, and generates a plain text version from the HTML.
Encoding and Compression
Instrumenting / Monitoring
Collects error and performance data from your Elixir applications and sends it to AppSignal.
Client for AppOptics API. Send metrics and tags to AppOptics time series service.
Collects metrics from your Elixir/Phoenix application and sends them to NewRelic.
Prometheus metrics and Grafana dashboards for all of your favorite Elixir libraries.
Prometheus.io monitoring system and time series database client in Erlang.
Elixir-friendly Prometheus.io monitoring system and time series database client.
Errors and Exception Handling
Eventhandling
Simple event bus implementation with topic filtering and built-in event store and event watcher.
Small, Fast event processing and monitoring for Erlang/OTP applications.
Examples and funny stuff
GraphQL api for coderplanets.com built with Phoenix 1.4 and Absinthe.
Elixir koans is a fun, easy way to get started with the elixir programming language.
This package is for interfacing with the Open Notify API to information such as the ISS's current location, crew, and when it will pass over a location.
Add social feed functionality to current applications. Exemplify OTP umbrella app, with 3 apps. Thin phoenix controllers.
This is the clone of busyloop/lolcat. But it does not support animation and some features of the original.
Web application that indexes all popular torrent sites, and saves it to the local database.
A step-by-step example/tutorial for building a Chat app in Phoenix for complete beginners. Covers testing, docs and deployment. Phoenix 1.5.3.
A comprehensive example/tutorial showing people how to use Ecto Types to transparently encrypt/decrypt data in a Phoenix 1.4 app.
An experiment with Phoenix Channels, GenEvents, React and Flux.
complete beginners step-by-step tutorial building a real time counter in Phoenix 1.5.3 and LiveView 0.14.1.
A complete beginners step-by-step tutorial for building a Todo List from scratch in Phoenix 1.5.3.
Feature Flags and Toggles
Feeds
Files and Directories
DirWalker lazily traverses one or more directory trees, depth first, returning successive file names.
A framework for doing Hadoop style Map/Reduce operations on collections of files.
Configurable mix task to watch file changes and run the corresponding command.
Framework Components
Authentication framework that can be used with or outside of phoenix. Similar to Addict but geared towards API usage.(Docs).
Highly customizable administration panel for Phoenix LiveView applications. (Docs, Demo).
Command handling middleware for Command Query Responsibility Segregation (CQRS) applications.
An Elixir plug that adds CORS headers to requests and responds to preflight requests (OPTIONS).
A repository similar to Ecto.Repo that works with REST API requests instead of a database.
ExAdmin is an auto administration package for Elixir and the Phoenix Framework.
Simple query params filtering for Phoenix framework inspired by Rails has_scope.
HTTP Router with various macros to assist in developing your application and organizing your code.
Plug that allows to add version compatibility layers via API Request/Response Gateways.
Use Ecto to enforce/validate parameters structure, akin to Rails' strong parameters.
Phoenix.HTML functions for working with HTML strings and templates.
Some helpers for phoenix html (truncate, timeagoinwords, numberwith_delimiter).
A project that integrates Phoenix with Linguist, providing a plug and view helpers. It looks abandoned: its last commit was on 2015 and its CI runs Elixir 1.0.3.
The VerneMQ MQTT pubsub adapter for the Phoenix framework.
Token authentication solution for Phoenix. Useful for APIs or single page apps.
Phoenix components and helpers for using CAPTCHAs with Cloudflare Turnstile.
A specification and conveniences for composable modules in between web applications.
Plug to ensure all requests are served from a single canonical host.
Inspired by modcloudflare, this Elixir plug parses Cloudflares CF-Connecting-IP HTTP request header into Plug.Conn's remoteip field.
Very simple plug which reads X-Forwarded-For or Forwarded header according to RFC7239 and fill conn.remote_ip with the root client ip.
A Plug that adds fprof tracing to requests, to allow for easy profiling.
Plug to redirect http requests to https requests behind a reverse proxy.
Injects a ribbon to your web application in the development environment.
Plug that adds various HTTP Headers to make Phoenix/Elixir app more secure.
AWS Signature V4 authentication protection for Phoenix/Plug Routes (Docs).
Build plug-like pipelines with your own token (instead of %Plug.Conn{}).
Render React.js components in Phoenix views focusing on easy installation and Brunch compatibility.
Resin is a plug that will add a configurable delay to every request that's passing through it, unless run in production.
Plug application and middleware that serves endpoint returns application's REVISION.
A support framework for searching, sorting and paginating models in Phoenix, with HTML support.
A mix task for creating new projects based on templates fetched from a Git-repo.
Helpers for paginating API responses with Scrivener and HTTP headers.
Helpers built to work with Scrivener's page struct to easily build HTML output for various CSS frameworks.
An authentication framework for Phoenix extending guardian with routing and other basic functionality.
Torch is a rapid admin generator for Phoenix apps. It uses generators rather than DSLs to ensure that the code remains maintainable.
Frameworks
A declarative, resource-oriented application framework for Elixir.
Full stack Elixir web framework that intelligently transpiles Elixir client-side code to JavaScript.
A set of HEEX components that makes it easy for Phoenix developers to build beautiful web apps.
Elixir Web Framework targeting full-featured, fault tolerant applications with realtime functionality.
A REST toolkit for building highly-scalable and fault-tolerant HTTP APIs with Elixir.
Games
A chess representation written in Erlang using Bitboards, ready for use on game servers.
A distributed Entity-Component-System framework, providing its own example MMORPG server.
Geolocation
Provide distance and heading calculations via Google distance matrix api.
Drop in replacement for Geohash encode/decode library implemented as a NIF.
Find Russian and Ukraine city by IP address and find country for other country.
Query locations for elevation data from the NASA Shuttle Radar Topography Mission.
Hardware
HTML
A library for parsing and extracting data from HTML and XML with CSS or XPath selectors.
A library to do pipeable transformations on html strings with CSS selectors, e.g. find(), prepend(), append(), replace() etc.
HTTP
Elli is a webserver you can run inside your Erlang application to expose an HTTP API.
An easy utility for responding with standard HTTP/JSON error payloads in Plug- and Phoenix-based applications.
An HTTP client with a focus on performance, built on top of Mint and NimblePool.
An Elixir library for parsing, constructing, and wildcard-matching URLs. Also available for Ruby and JavaScript.
A lightweight wrapper around HTTPoison that provides a fluent and composable way to build http requests.
A base-on Broadway fast high-level web crawling & scraping framework for Elixir.
An exploration into a stand-alone library for Plug applications to easily adopt WebSockets.
Images
Cloudex is an Elixir library that can upload image files or urls to Cloudinary.
An Elixir library to parse images (binaries) and get the dimensions, detected mime-type and overall validity for a set of image formats.
JSON
Implementation of RFC 6901 which defines a string syntax for identifying a specific value within a JSON document.
JsonStreamEncoder is a streaming encoder for streaming JSON to an IOish thing in Elixir.
An Elixir implementation of the JSON Web Token (JWT) Standards Track (RFC 7519).
Languages
Lexical analysis
Logging
A Logger backend that will generate Graylog Extended Log Format (GELF) messages.
JSON Logger is a logger backend that outputs elixir logs in JSON format.
A backend for the Elixir Logger that will send logs to the Logstash UDP input.
Easily parsable, one-line logging for Phoenix and Plug applications, inspired by Lograge.
Log custom app metrics to stdout for use by Librato and other downstream processors.
MStore is a experimental metric store build in erlang, the primary functions are open, new, get and put.
Macros
An anaphoric macro is one that deliberately captures a variable (typically it) from forms supplied to the macro.
Simple convention and DSL for transformation of elixir functions to an API for later documentation and or validation.
Crudry is an elixir library for DRYing CRUD of Phoenix Contexts and Absinthe Resolvers.
Macros to create functions with syntax based keyword parameters with default values.
First-class match specifications for Elixir :ets querying and function call tracing.
Pipe elixir functions that match {:ok,}, {:error,} tuples or custom patterns.
Markdown
Miscellaneous
AlloyCI is a Continuous Integration, Deployment, and Delivery coordinator, written in Elixir, that takes advantage of the GitLab CI Runner, and its capabilities as executor, to prepare and run your pipelines.
AtomVM allows to run Elixir/Erlang code on embedded devices such as ESP32 and STM32 microcontrollers.
Countries is a collection of all sorts of useful information for every country in the ISO 3166 standard.
A pure elixir country data provider containing various information for every country in ISO 3166.
CubDB is an embedded key-value database, written in the Elixir language. It runs locally, it is schema-less, and backed by a single file.
Provide the in-memory size of Erlang terms, ignoring where these are stored.
An Elixir SDK implementation for the Microsoft Azure Speech Service.
Generic Task behavior that helps to encapsulate worker errors and recover from them in classic GenStage's.
An API wrapper for Jisho.org, an online Japanese dictionary. Allows users to search by word, symbol, and or tags (refer to docs).
A mix task that lists the license(s) of all installed packages in your project.
Native Implemented Functions
Natural Language Processing (NLP)
Networking
Open-source VPN server and egress firewall for Linux built on WireGuard. Firezone is easy to set up (all dependencies are bundled thanks to Chef Omnibus), secure, performant, and self hostable.
Can be used to find a vendor of a MAC given in hexadecimal string (according to IEEE).
Sockerl is an advanced Erlang/Elixir socket library for TCP protocols and provides fast, useful and easy-to-use API for implementing servers, clients and client connection pools.
An Elixir toolkit for performing tasks on one or more servers, built on top of Erlang’s SSH application.
Office
ORM and Datamapping
Transforms notifications from the Postgres LISTEN/NOTIFY mechanism into callback execution.
Ecto custom type for storing encrypted password using Comeonin.
A connector for CouchDB, the Erlang-based, JSON document database.
A HBase driver for Erlang/Elixir using Jinterface and the Asynchbase Java client to query the database.
Ecto facade that allows to separate writes and reads to different databases.
Ecto auto migration library. It allows to generate and run migrations for initial and update migrations.
Simple and Powerful Ecto Shortcuts to simplify and speed up development.
Simplify your Ecto model validation tests. Loosely inspired by shoulda matchers, but simpler.
Allows you to easily get notifications about database changes directly from PostgreSQL.
An Erlang app for communicating with Elastic Search's rest interface.
An Elixir package that provides a Map-like interface (Map/Access/Enumerable/Collectable) backed by an ETS table.
A CQRS EventStore using Postgres for persistence, written in Elixir.
Elixir Map/List/Set interfaces for Redis data structures (uses Redix, but that is configurable).
Elixir enumerable type definition in a simple way to be used with any database.
An Elixir library that provides a simple DSL for seeding databases through Ecto.
An Elixir library using Eventstore for persistence of events generated by aggregates (CQRS).
Level for Elixir implements various helper functions and data types for working with Googles Level data store.
Alternative driver for MongoDB with support for recent versions of MongoDB and comprehensive feature list.
Ecto plugin for tracking and recording all the changes in your database.
An Elixir flavored DSL for building JSON based requests to Elasticsearch engine.
OTP
Package Management
Protocols
Queue
Create a data stream across your information systems to query, augment and transform data according to Elixir matching rules.
Concurrent and multi-stage data ingestion and data processing with Elixir.
A framework for working with message queues, with adapters for SQS and AMQP, and plugs for reusable messaging patterns.
A dumb message bus for sharing data between microservices decoupled using Redis.
An Elixir library for working with Faktory, a polyglot job processing system made by the author of Sidekiq.
Set of behaviours meant to be used to create RabbitMQ consumers and publishers.
Another scheduling system, focusing on the collection of results for one-time tasks.
Robust asynchronous job processor powered by Elixir and modern PostgreSQL.
background processing application written in Elixir and uses RabbitMQ as a messaging backend.
Release Management
REST and API
Search
Security
A suite of tools, programming libraries and infrastructure that make it easy to build devices that communicate securely, privately and trustfully with cloud services and other devices. Docs .
Static Page Generation
Statistics
Templating
Testing
A polite, well mannered and thoroughly upstanding testing framework for Elixir.
Bypass provides a quick way to create a mock HTTP server with a custom plug.
Writes a coverage.xml from mix test --cover file compatible with Jenkins' Cobertura plugin.
Ecto plugin with default configuration for repos for testing different ecto plugins with databases.
A library for Elixir run-time system code line-level coverage analysis. You can use it to evaluate the integration tests code coverage. Introduction article.
Flexible test factories for Elixir. Works out of the box with Ecto and Ecto associations.
FakeServer is an HTTP server that simulates response and makes testing external APIs easier.
Partial Map comparison that ensures fields are present while ignoring their values.
KATT (Klarna API Testing Tool) is an HTTP-based API testing tool for Erlang.
A package to elegantly mock module functions within (asynchronous) ExUnit tests using meck.
Automatically run your Elixir project's tests each time you save a file.
Assertions that know how to update themselves, otherwise known as snapshot or approval testing.
PropEr (PROPerty-based testing tool for ERlang) is a QuickCheck-inspired open-source property-based testing tool for Erlang.
Elixir testing libraries with nested contexts, superior readability, and ease of use.
A set of test helpers that make sure you always select the right elements in your Phoenix app.
TucoTuco helps you test your web application by running a web browser and simulating user interaction with your application.
Text and Numbers
A Bencode encoder and decoder for Elixir. The decoder will return the checksum value of the info dictionary, if an info dictionary was found in the input.
Elixir cryptocurrency library for Bitcoin, Ethereum, and other blockchains. Includes cryptography, number theory (prime, congruence), and general mathematics library for exploratory math.
Translate between traditional chinese and simplified chinese based on wikipedia data, and translate chinese words/characters to pinyin (or slug with or without tone).
Cldr is an Elixir library for the Unicode Consortium's Common Locale Data Repository (CLDR).
Classless Inter-Domain Routing (CIDR) for Elixir that is compatible with :inet and supports both IPv4 and IPv6.
Working with Money safer, easier, and fun, interpretation of the Fowler's Money pattern.
A NEAR API in Elixir - a library for DApps development on the NEAR blockchain platform.
Number is a pretentiously-named Elixir library which provides functions to convert numbers into a variety of different formats.
A module to generate a random string based on a given string pattern.
Convenience library for random base64 strings modeled after my love for Ruby's SecureRandom.
Slugger can generate slugs from given strings that can be used in URLs or file names.