Skip to content

A curated list of amazingly awesome Elixir and Erlang libraries, resources and shiny things.

Notifications You must be signed in to change notification settings

Cobenian/awesome-elixir

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Awesome Elixir Build Status

A curated list of amazingly awesome Elixir libraries, resources, and shiny things inspired by awesome-php.

Actors

Libraries and tools for working with actors and such.

  • exactor - Helpers for easier implementation of actors in Elixir.
  • exos - A Port Wrapper which forwards cast and call to a linked Port.
  • mon_handler - A minimal GenServer that monitors a given GenEvent handler.
  • pool_ring - Create a pool based on a hash ring.
  • poolboy - A hunky Erlang worker pool factory.
  • pooler - An OTP Process Pool Application.
  • sbroker - Sojourn-time based active queue management library.
  • workex - Backpressure and flow control in EVM processes.

Algorithms and Data structures

Libraries and implementations of algorithms and data structures.

  • array - An Elixir wrapper library for Erlang's array.
  • blocking_queue - BlockingQueue is a simple queue implemented as a GenServer. It has a fixed maximum length established when it is created.
  • bloomex - A pure Elixir implementation of Scalable Bloom Filters.
  • count_buffer - Buffer a large set of counters and flush periodically.
  • cuckoo - A pure Elixir implementation of Cuckoo Filters.
  • cuid - Collision-resistant ids optimized for horizontal scaling and sequential lookup performance, written in Elixir.
  • datastructures - A collection of protocols, implementations and wrappers to work with data structures.
  • dlist - Deque implementations in Elixir.
  • eastar - A* graph pathfinding in pure Elixir.
  • elistrix - A latency / fault tolerance library to help isolate your applications from an uncertain world of slow or failed services.
  • exfsm - Simple elixir library to define a static FSM.
  • exkad - A kademlia implementation in Elixir.
  • exmatrix - ExMatrix is a small library for working with matrices, originally developed for testing matrix multiplication in parallel.
  • ezcryptex - Thin layer on top of Cryptex.
  • fnv - Pure Elixir implementation of Fowler–Noll–Vo hash functions.
  • fsm - Finite state machine as a functional data structure.
  • fuse - This application implements a so-called circuit-breaker for Erlang.
  • graphmath - An Elixir library for performing 2D and 3D mathematics.
  • hash_ring_ex - A consistent hash-ring implemention for Elixir.
  • isaac - Isaac is an elixir module for ISAAC: a fast cryptographic random number generator.
  • key2value - Erlang 2-way Set Associative Map.
  • lfsr - Elixir implementation of a binary Galois Linear Feedback Shift Register.
  • loom - A CRDT library with δ-CRDT support.
  • lz4 - LZ4 bindings for Erlang for fast data compressing.
  • memoize - A memoization macro (defmemo) for elixir using a genserver backing store.
  • monadex - Upgrade your Elixir pipelines with monads.
  • murmur - A pure Elixir implementation of the non-cryptographic hash Murmur3.
  • natural_sort - Elixir natural sort implementation for lists of strings.
  • parex - Parallel Execute (Parex) is an Elixir module for executing multiple (slow) processes in parallel.
  • red_black_tree - Red-Black tree implementation in Elixir.
  • remodel - An Elixir presenter package used to transform map structures.
  • rendezvous - Implementation of the Rendezvous or Highest Random Weight (HRW) hashing algorithm in Elixir.
  • sfmt - SIMD-oriented Fast Mersenne Twister (SFMT) for Erlang.
  • sorted_set - Sorted Sets for Elixir.
  • structurez - A playground for data structures in Elixir.
  • supermemo - An Elixir implementation of the Supermemo 2 algorithm.
  • the_fuzz - Fuzzy string-matching algorithm implementations.
  • tinymt - Tiny Mersenne Twister (TinyMT) for Erlang.
  • trie - Erlang Trie Implementation.
  • zipper_tree - Variadic aritity tree with a zipper for Elixir.

Applications

Standalone applications.

  • bpe - Business Process Engine in Erlang.
  • dragonfly_server - Elixir app to serve Dragonfly images.
  • hyperledger - Reference server for the Hyperledger protocol.
  • majremind - A self-maintained database of your updated server which tells you which one needs to be updated. .
  • n2o - WebSocket Application Server.
  • poxa - Open Pusher implementation, compatible with Pusher libraries.
  • tty2048 - Terminal-based 2048 game written in Elixir.

Audio and Sounds

Libraries working with sounds and tones.

Authentication

Libraries for implementing authentications schemes.

  • apache_passwd_md5 - Apache/APR Style Password Hashing.
  • aws_auth - AWS Signature Version 4 Signing Library for Elixir.
  • github_oauth - A simple github oauth library.
  • guardian - An authentication framework for use with Elixir applications.
  • htpasswd - Apache httpasswd file reader/writer in Elixir.
  • mojoauth - MojoAuth implementation in Elixir.
  • oauth2 - An OAuth 2.0 client library for Elixir.
  • oauth2cli - Simple OAuth2 client written for Elixir.
  • oauth2ex - Another OAuth 2.0 client library for Elixir.
  • oauther - An OAuth 1.0 implementation for Elixir.
  • openmaize - Authentication and authorization library for Elixir.
  • xoauth2 - A simple XOAuth2 module for Elixir.

Authorization

Libraries for implementing Authorization handling.

  • canary - An authorization library for Elixir applications that restricts what resources the current user is allowed to access.
  • openmaize - Authentication and authorization library for Elixir.

Behaviours and Interfaces

Definitions how something should behave, like Interfaces from OOP-World

  • connection - Connection behaviour for connection processes. The API is superset of the GenServer API.

Bittorrent

Sharing is caring with Elixir

  • tracker_request - Dealing with bittorrent tracker requests and responses.
  • wire - Encode and decode bittorrent peer wire protocol messages with Elixir.

Build Tools

Project build and automation tools.

  • active - Recompilation and Reloading on FileSystem changes.
  • coffee_rotor - Rotor plugin to compile CoffeeScript files.
  • dismake - Mix compiler running make.
  • edeliver - Deployment for Elixir and Erlang.
  • etude - Parallel computation coordination compiler for Erlang/Elixir.
  • ExMake - A modern, scriptable, dependency-based build tool loosely based on Make principles.
  • Exscript - Elixir escript library.
  • mad - Small and Fast Rebar Replacement.
  • pc - A rebar3 port compiler.
  • reaxt - React template into your Elixir application for server rendering.
  • rebar3_eqc - A rebar3 plugin to enable the execution of Erlang QuickCheck properties.
  • reltool_util - Erlang reltool utility functionality application.
  • relx - A release assembler for Erlang.
  • remix - Automatic recompilation of Mix code on file change.
  • rotor - Super-simple build system for Elixir.
  • sass_elixir - A sass plugin for Elixir projects.

Caching

Libraries for caching data.

  • con_cache - ConCache is an ETS based key/value storage.
  • elixir_locker - Lockeris a Elixir wrapper for the locker Erlang library that provides some useful libraries that should make using locker a bit easier.
  • locker - Atomic distributed "check and set" for short-lived keys.

Cloud Infrastructure and Management

Applications, tools and libraries for your own cloud service.

  • aws - AWS clients for Elixir.
  • Cloudi - CloudI is for back-end server processing tasks that require soft-realtime transaction.
  • discovery - An OTP application for auto-discovering services with Consul.
  • erlcloud - Cloud Computing library for Erlang (Amazon EC2, S3, SQS, SimpleDB, Mechanical Turk, ELB).
  • ex_aws - AWS client. Currently supports DynamoDB and Kinesis.
  • fleet_api - A simple wrapper for the Fleet (CoreOS) API. Can be used with etcd tokens or via direct node URLs.
  • nodefinder - Strategies for automatic node discovery in Erlang.
  • sidejob - Parallel worker and capacity limiting library for Erlang.
  • sidetask - SideTask is an alternative to Task.Supervisor using Basho's sidejob library with parallelism and capacity limiting.

Code Analysis

Libraries and tools for code base analysis, parsing, and manipulation.

  • belvedere - An example of CircleCI integration with Elixir .
  • coverex - Coverage Reports for Elixir.
  • dialyxir - Mix tasks to simplify use of Dialyzer in Elixir projects.
  • dogma - A code style linter for Elixir, powered by shame.
  • excoveralls - Coverage report tool for Elixir with coveralls.io integration.
  • exprof - A simple code profiler for Elixir, using eprof.

Command Line Applications

Anything helpfull for building CLI applications.

  • anubis - Command-Line application framework for Elixir.
  • getopt - Command-line options parser for Erlang.

Configuration

Libraries and tools working with configurations

  • configparser_ex - A simple Elixir parser for the same kind of files that Python's configparser library handles.
  • conform - Easy release configuration for Elixir apps.
  • dotenv - A port of dotenv to Elixir.
  • ex_conf - Simple Elixir Configuration Management.
  • figaro - Simple Elixir project configuration.

Cryptography

Encrypting and decrypting data

  • cipher - Elixir crypto library to encrypt/decrypt arbitrary binaries.
  • comeonin - Password authorization (bcrypt) library for Elixir.
  • elixir_tea - TEA implementation in Elixir.
  • exgpg - Use gpg from Elixir.
  • pot - Erlang library for generating one time passwords compatible with Google Authenticator.
  • rsa - public_key cryptography wrapper for Elixir.
  • tea_crypto - Tiny Encryption Algorithm implementation.

CSV

Libraries and implementations working with CSV.

  • cesso - CSV handling library for Elixir.
  • csv - CSV Decoding and Encoding for Elixir.
  • csvlixir - A CSV reading/writing application for Elixir.
  • ex_csv - CSV for Elixir.

Date and Time

Libraries for working with dates and times.

  • block_timer - Macros to use :timer.apply_after and :timer.apply_interval with a block.
  • calendar - Calendar is a date and time library for Elixir.
  • chronos - An Elixir date/time library.
  • good_times - Expressive and easy to use datetime functions.
  • milliseconds - Simple library to work with milliseconds in Elixir.
  • moment - Parse, validate, manipulate, and display dates in Elixir.
  • quantum - Cron-like job scheduler for Elixir applications.
  • repeatex - Natural language parsing for repeating dates.
  • timex - Easy to use Date and Time modules for Elixir.
  • timex_interval - A date/time interval library for Elixir projects, based on Timex.
  • tzdata - The timezone database in Elixir.

Debugging

Libraries and tools for debugging code and applications.

  • beaker - Statistics and Metrics library for Elixir.
  • benchfella - Benchmarking tool for Elixir.
  • bmark - A benchmarking tool for Elixir.
  • booter - Boot an Elixir application, step by step.
  • dbg - Distributed tracing for Elixir.
  • eflame - Flame Graph profiler for Erlang.
  • eh - A tool to look up Elixir documentation from the command line.
  • eper - Erlang performance and debugging tools.
  • ether - Ether provides functionality to hook Elixir into the Erlang debugger.
  • exometer - Basic measurement objects and probe behavior in Erlang.
  • exrun - Distributed tracing for Elixir with rate limiting and simple macro-based interface.
  • quaff - The Debug module provides a simple helper interface for running Elixir code in the erlang graphical debugger.

Documentation

Libraries and tools for creating documentation.

  • ex_doc - ExDoc is a tool to generate documentation for your Elixir projects.
  • ex_doc_dash - Formatter for ExDoc to generate docset documentation for use in Dash.app.
  • hexdocset - Convert hex doc to Dash.app's docset format.
  • inch-ci - Documentation badges for Ruby & Elixir.
  • maru_swagger - Add swagger compliant documentation to your maru API.

ECMAScript

Implementations working with JavaScript, JScript or ActionScript.

  • estree - A implementation of the SpiderMonkey Parser API in Elixir.

Email

Working with Email and stuff.

  • gen_smtp - A generic Erlang SMTP server and client that can be extended via callback modules.
  • mailer - A simple SMTP mailer.
  • mailibex - Library containing Email-related implementations in Elixir: dkim, spf, dmark, mimemail, smtp.
  • mailman - Mailman provides a clean way of defining mailers in your Elixir applications.

Encoding and Compression

Transforming data in different formats or compressing it.

  • huffman - Huffman encoding and decoding in Elixir.

Eventhandling

Sending/Emitting and receiving/handling Events in Elixir.

  • goldrush - Small, Fast event processing and monitoring for Erlang/OTP applications.
  • reaxive - Reaxive is a reactive event handling library, inspired by Elm and Reactive Extensions.

Examples and funny stuff

Example code and stuff tu funny or curious not to mention.

  • dice - Roll the dice, in Elixir.
  • dicks - An Elixir client for the Dick As A Service platform.
  • harakiri - Help applications kill themselves.
  • koans - Learn Elixir by using elixir-koans.
  • lolcat - This is the clone of busyloop/lolcat. But, not supports animation and some features of the original.
  • phoenix-flux-react - An experiment with Phoenix Channels, GenEvents, React and Flux.
  • portal - A shooting fault-tolerant doors for distributed portal data-transfer application in Elixir.
  • rollex - Elixir library using a Pratt Parser algorithm to calculate dice rolls.
  • rubix - A very simple (and barely-functioning) Ruby runner for Elixir.
  • vulvapi - A JSON API to fetch vulvas.
  • vulvex - An Elixir client for the VulvAPI.
  • weather - A command line weather app built using Elixir.

Feeds

Libraries working with feeds like RSS or ATOM.

  • feeder - Parse RSS and Atom feeds.
  • feeder_ex - RSS feed parser. Simple wrapper for feeder.

Files and Directories

Libraries and implementations for working with files and directories.

  • arc - Flexible file upload and attachment library for Elixir.
  • cassius - Monitor Linux file system events.
  • dir_walker - DirWalker lazily traverses one or more directory trees, depth first, returning successive file names.
  • elixgrep - A framework for doing Hadoop style Map/Reduce operations on collections of files.
  • ex_minimatch - Globbing paths without walking the tree!.
  • exfswatch - A file change watcher wrapper based on fs.
  • fs - Erlang FileSystem Listener.
  • librex - Elixir library to convert office documents to other formats using LibreOffice.
  • Radpath - Path library for Elixir, inspired by Python's Enhpath.
  • zarex - Filename sanitization for Elixir.

Formulars

Handling web formulars and similar stuff.

  • forms - Erlang Business Documents Generator.

Framework Components

Standalone component from web development frameworks.

  • addict - User authentication for Phoenix Framework.
  • airbrake_plug - Report errors in your Plug stack or whatever to Airbrake.
  • ashes - A code generation tool for the Phoenix web framework.
  • blaguth - Basic Access Authentication in Plug applications.
  • cors_plug - An Elixir plug that adds CORS headers to requests and responds to preflight requests (OPTIONS).
  • corsica - Elixir library for dealing with CORS requests.
  • crudex - CRUD utilities for Phoenix and Ecto.
  • exrecaptcha - Simple reCaptcha display/verify code for Elixir applications.
  • flinch - Resource layer for Phoenix and Ecto projects for auto-generated RESTful CRUD APIs.
  • http_router - HTTP Router with various macros to assist in developing your application and organizing your code.
  • passport - Passport provides authentication for Phoenix applications.
  • phoenix_ecto - Phoenix and Ecto integration.
  • phoenix_generator - Generate boilerplate for Phoenix applications.
  • phoenix_html - Phoenix.HTML functions for working with HTML strings and templates.
  • phoenix_linguist - A project that integrates Phoenix with Linguist, providing a plug and view helpers.
  • phoenix_live_reload - Provides live-reload functionality for Phoenix.
  • phoenix_pubsub_postgres - Postgresql PubSub adapter for Phoenix apps.
  • phoenix_pubsub_rabbitmq - RabbitMQ adapter for Phoenix's PubSub layer.
  • phoenix_pubsub_redis - The Redis PubSub adapter for the Phoenix framework.
  • phoenix_pubsub_vernemq - The VerneMQ MQTT pubsub adapter for the Phoenix framework.
  • phoenix_token_auth - Token authentication solution for Phoenix. Useful for APIs or single page apps.
  • plug - A specification and conveniences for composable modules in between web applications.
  • plug_accesslog - Plug for writing access logs.
  • plug_auth - Collection of authentication-related plugs.
  • plug_cloudflare - Inspired by mod_cloudflare, this Elixir plug parses Cloudflares CF-Connecting-IP HTTP request header into Plug.Conn's remote_ip field.
  • plug_cors - CORS Plug.
  • plug_forward_peer - Very simple plug which reads X-Forwarded-For or Forwarded header according to RFC7239 and fill conn.remote_ip with the root client ip.
  • plug_heartbeat - A plug for responding to heartbeat requests.
  • plug_jwt - Plug for JWT authentication.
  • plug_rails_cookie_session_store - Rails compatible Plug session store.
  • plug_redirect_https - Plug to redirect http requests to https requests behind a reverse proxy.
  • plug_require_header - Require and extract HTTP headers and handle missing ones.
  • plug_response_header - easy manipulation of HTTP response headers.
  • plug_ribbon - Injects a ribbon to your web application in the development environment.
  • plug_session_memcached - A very simple memcached session store for Elixir's plug.
  • plug_statsd - A plug for automatically sending timing and count metrics to statsd.
  • plugs - Collection of Plug middleware for web applications.
  • plugsnag - Bugsnag notifier for Elixir's plug.
  • resin - Resin is a plug that will add a configurable delay to every request that's passing through it, unless run in production.
  • scaffold - A mix task for creating new projects based on templates fetched from a Git-repo.
  • scrivener - Paginate your Ecto queries.
  • trailing_format_plug - An Elixir plug to support legacy APIs that use a rails-like trailing format.
  • webassembly - Web DSL for Elixir.
  • weebo - An XML-RPC parser/formatter for Elixir, with full support for datatype mapping.

Frameworks

Web development frameworks.

  • clint - An Elixir web micro-framework, inspired by Sinatra, built on top of Plug and Cowboy.
  • exelli - An Elli Elixir wrapper with some sugar sytnax goodies.
  • phoenix - Elixir Web Framework targeting full-featured, fault tolerant applications with realtime functionality.
  • placid - A REST toolkit for building highly-scalable and fault-tolerant HTTP APIs with Elixir.
  • rackla - API Gateways in Elixir.
  • relax - Simple Elixir implementation of a jsonapi.org server.
  • rest - Micro-REST framework with typed JSON.
  • sugar - Modular web framework for Elixir.
  • trot - An Elixir web micro-framework.

Geolocation

Libraries for geocoding addresses and working with latitudes and longitudes.

  • geo - A collection of GIS functions for Elixir.
  • geolix - MaxMind GeoIP2 database reader/decoder.

Hardware

Hardware related things like I/O interfaces and such.

  • elixir_ale - Elixir access to hardware I/O interfaces such as GPIO, I2C, and SPI.

HTTP

Libraries for working with HTTP and scraping websites.

  • bolt - Simple and fast http proxy.
  • cauldron - An HTTP/SPDY server as a library.
  • elli - Elli is a webserver you can run inside your Erlang application to expose an HTTP API.
  • exvcr - HTTP request/response recording library for Elixir, inspired by VCR.
  • http - HTTP server for Elixir.
  • httpoison - Yet Another HTTP client for Elixir powered by hackney.
  • httpotion - Fancy HTTP client for Elixir, based on ibrowse.
  • httprot - HTTP client library.
  • lhttpc - A lightweight HTTP/1.1 client implemented in Erlang.
  • mochiweb - MochiWeb is an Erlang library for building lightweight HTTP servers.
  • spell - Spell is a Web Application Messaging Protocol (WAMP) client implementation in Elixir.
  • tesla - HTTP client library, with support for middleware and multiple adapters.
  • uri_template - RFC6570 compliant URI template processor for Elixir.
  • web_socket - An exploration into a stand-alone library for Plug applications to easily adopt WebSockets.
  • webdriver - This is an implementation of the WebDriver protocol client. It currently supports PhantomJS, FireFox, ChromeDriver and remote webdriver servers (e.g. Selenium).

Images

Libraries for working with and manipulating images.

  • bump - A BMP file writer in pure Elixir.
  • chunky_svg - A library for drawing things with SVG.
  • exexif - Pure Elixir library to extract TIFF and EFIX metadata from jpeg files.
  • identicon - An Elixir library for generating 5x5 identicons.
  • imagineer - Image parsing in Elixir.
  • mogrify - An Elixir wrapper for ImageMagick command line.

JSON

Libraries and implementations working with JSON.

  • exjson - JSON parser and generator in Elixir.
  • exjsx - JSON for Elixir, based on jsx.
  • ja_serializer - JSONAPI.org Serialization in Elixir.
  • jazz - Yet another library to handle JSON in Elixir.
  • joken - Encodes and decodes JSON Web Tokens.
  • jsex - json for Elixir.
  • json - Native JSON library for Elixir.
  • json_pointer - Implementation of RFC 6901 which defines a string syntax for identifying a specific value within a JSON document.
  • jsonapi - A project that will render your data models into JSONAPI Documents.
  • jsx - An Erlang application for consuming, producing, and manipulating json.
  • jsxn - jsx but with maps.
  • jwtex - A library to encode and decode JWT tokens.
  • poison - Poison is a new JSON library for Elixir focusing on wicked-fast speed without sacrificing simplicity, completeness, or correctness.
  • world_json - topojson country and state/province collections for elixir/erlang.

Languages

Languages built on top of Elixir.

  • lighthouse_scheme - A small Lisp-like language and interactive REPL, built in Elixir.

Lexical analysis

All about lexical analyser, lexer, scanner, tokenizer or compiler.

  • elixir_script - The goal is to convert a subset (or full set) of Elixir code to JavaScript.
  • ex_abnf - Parser for ABNF Grammars in Elixir.
  • lex_luthor - LexLuthor is a Lexer in Elixir which uses macros to generate a reusable lexers.

Logging

Logging infos and messages.

  • honeybadger - Error logging to Honeybadger.
  • json_logger - JSON Logger is a logger backend that outputs elixir logs in JSON format.
  • lager - A logging framework for Erlang/OTP by basho.com.
  • lager_logger - A lager backend that forwards all log messages to Elixir's Logger.
  • logfmt - Logfmt is a module for encoding and decoding logfmt-style log lines.
  • logger_logstash_backend - A backend for the Elixir Logger that will send logs to the Logstash UDP input.
  • metrix - Log custom app metrics to stdout for use by Librato and other downstream processors.
  • rogger - Elixir logger to publish log messages in RabbitMQ.
  • syslog - Erlang port driver for interacting with syslog via syslog(3).

Macros

Macros for faster and easier development. Sugar for your code.

  • anaphora - Anaphora is the anaphoric macro collection for Elixir. An anaphoric macro is one that deliberately captures a variable (typically it) from forms supplied to the macro.
  • apix - Simple convention and DSL for transformation of elixir functions to an API for later documentation and or validation.
  • guardsafe - Macros expanding into code that can be safely used in guard clauses.
  • lineo - parse transform for accurate line numbers.
  • pattern_tap - Macro for tapping into a pattern match while using the pipe operator.
  • pipes - Macros for more flexible composition with the Elixir Pipe operator.
  • rebind - rebind parse transform for Erlang.
  • rulex - Simple rule handler using Elixir pattern matching.

Markdown

Libraries and tools working with Markdown and such.

  • cmark - Elixir NIF for CommonMark (in C), a parser following the CommonMark spec.
  • discount - Elixir NIF for discount, a Markdown parser.
  • earmark - Markdown parser for Elixir.
  • Markdown - Implemented entirely as a NIF binding to the Hoedown library.

Miscellaneous

Useful libraries or tools that don't fit in the categories above.

  • address_us - Library for parsing US Addresses into their individual parts.
  • Apex - Awesome Print for Elixir.
  • charm - Use ANSI terminal characters to write colors and cursor positions.
  • core_data - iOS Core Data parser.
  • Countries - Countries is a collection of all sorts of useful information for every country in the ISO 3166 standard.
  • dye - A library for dyeing your terminal output.
  • dynamic_compile - Compile and load Erlang modules from string input.
  • erlang_term - Provide the in-memory size of Erlang terms, ignoring where these are stored.
  • ex2ms - Translates Elixir functions to match specifications for use with ets.
  • ex_rated - Simple and flexible rate-limiting for API's or anything.
  • exlibris - A collection of random library functions.
  • exprint - A printf / sprintf library for Elixir, works as a wrapper for :io.format.
  • exquisite - LINQ-like match_spec generation for Elixir.
  • exsync - Yet another Elixir reloader.
  • funnel - Streaming Elixir API built upon ElasticSearch's percolation.
  • gimei_ex - Elixir port of gimei library.
  • growl - Simple wrapper for growl, the notification system for OSX.
  • html_entities - Elixir module for decoding HTML entities in a string.
  • huex - Elixir client for Philips Hue connected light bulbs.
  • keys1value - Erlang set associative map for key lists.
  • mdef - Easily define multiple function heads in Elixir.
  • mixstar - MixStar starred GitHub repository that depends on your project.
  • netrc - Reads netrc files implemented in Elixir.
  • pact - Better dependency injection in Elixir for cleaner code and testing.
  • porcelain - Porcelain implements a saner approach to launching and communicating with external OS processes from Elixir.
  • presentex - Elixir to HTML/JavaScript based presentation framework.
  • radpath - A path library for Elixir inspired by Python path libraries.
  • ratx - Rate limiter and overload protection for erlang application.
  • reprise - Simplified module reloader for Elixir.
  • spawndir - Spawns processes from the file system.
  • url_unroller - Simple URL unroller (un-shortener) in Elixir.

Native Implemented Functions

Tools and libraries working with Erlang NIF.

  • nifty - Helper script for setting up the boilerplate required when writing a NIF.

Networking

Libraries and tools for using network related stuff.

  • chatty - A basic IRC client that is most useful for writing a bot.
  • eio - Elixir server of engine.io.
  • ejabberd - Robust, ubiquitous and massively scalable Jabber/XMPP Instant Messaging platform.
  • ExIrc - IRC client adapter for Elixir projects.
  • ExPcap - PCAP parser written in Elixir.
  • hedwig - XMPP Client/Bot Framework for Elixir.
  • pool - Socket acceptor pool for Elixir.
  • reagent - reagent is a socket acceptor pool for Elixir.
  • slacker - A bot library for the Slack chat service.
  • socket - Socket wrapping for Elixir.
  • sshex - Simple SSH helpers for Elixir.
  • wifi - Various utility functions for working with the local Wifi network in Elixir.
  • wpa_supplicant - Elixir interface to the wpa_supplicant.
  • yodel - Extensible Messaging & Presence Protocol (XMPP) client in Elixir.

ORM and Datamapping

Libraries that implement object-relational mapping or datamapping techniques.

  • amnesia - Mnesia wrapper for Elixir.
  • arc_ecto - Arc.Ecto provides an integration with Arc and Ecto.
  • atlas - Object Relational Mapper for Elixir.
  • boltun - Transforms notifications from the Postgres LISTEN/NOTIFY mechanism into callback execution.
  • caylir - Cayley driver for Elixir.
  • craterl - Erlang client for crate.
  • database_url - Parse database URL and return keyword list for use with Ecto.
  • datomex - Elixir driver for the Datomic REST API.
  • dexts - Disk Elixir Terms Storage, dest wrapper.
  • diver - A HBase driver for Erlang/Elixir using Jinterface and the Asynchbase Java client to query the database.
  • ecto - A database wrapper and language integrated query for Elixir.
  • ecto_hstore - Ecto.Hstore adds Postgres Hstore compatibility to Ecto.
  • ecto_lazy_float - Ecto.LazyFloat - An Ecto.Float that accepts binary and integers.
  • ecto_migrate - Ecto auto migration library. It allows to generate and run migrations for initial and update migrations.
  • ecto_ordered - Ecto extension for ordered models.
  • ecto_validation_case - Simplify your Ecto model validation tests. Loosely inspired by shoulda matchers, but simpler.
  • eredis - Erlang Redis client.
  • erlastic_search - An Erlang app for communicating with Elastic Search's rest interface.
  • esqlite - Erlang NIF for sqlite.
  • ex_bitcask - Elixir wrapper of Basho's Bitcask Key/Value store.
  • exleveldb - Elixir wrapper around Basho's eleveldb module for LevelDB.
  • exredis - Redis client for Elixir.
  • exseed - An Elixir library that provides a simple DSL for seeding databases through Ecto.
  • exts - Elixir Terms Storage, ets wrapper.
  • hstore - Hstore support for Postgrex.
  • instream - InfluxDB driver for Elixir.
  • isn - Ecto types for the postgreSQL isn extension.
  • kalecto - Glue between Kalends and Ecto for saving dates, times and datetimes.
  • kst - Erlang Abstract Term Database.
  • level - Level for Elixir implements various helper functions and data types for working with Googles Level data store.
  • mariaex - MariaDB/MySQL driver for Elixir.
  • mongo - MongoDB driver for Elixir.
  • mysql - MySQL/OTP – MySQL driver for Erlang/OTP.
  • mysqlex - An Ecto-compatible wrapper around the mysql-otp library.
  • postgrex - PostgreSQL driver for Elixir.
  • red - Persist relationships between objects in Redis, in a graph-like way.
  • redo - Heroku's pipelining redis client for erlang.
  • rethinkdb - Rethinkdb client in pure Elixir using JSON protocol.
  • riak - A Riak client written in Elixir.
  • sqlite_ecto - SQLite3 adapter for Ecto.
  • sqlitex - An Elixir wrapper around esqlite. Allows access to sqlite3 databases.
  • ssdb_elixir - ssdb client for Elixir, with focus on performance.
  • tds - MSSQL / TDS Database driver for Elixir.
  • tds_ecto - MSSQL / TDS Adapter for Ecto.
  • timex_ecto - An adapter for using Timex DateTimes with Ecto.
  • tirexs - An Elixir flavored DSL for building JSON based requests to Elasticsearch engine.
  • udpflux - An opinionated InfluxDB UDP only client .
  • yar - Yet another Redis client for Elixir.

OTP

Libraries for working with OTP related things.

  • core - Library for selective receive OTP processes.
  • immortal - Immortal is a small collection of helper modules intended to make it easier to build a fault-tolerant OTP application.
  • libex_config - Helpers for accessing OTP application configuration.

Package Management

Libraries and tools for package and dependency management.

  • Hex - A package manager for the Erlang ecosystem.
  • rebar3_hex - Hex.pm plugin for rebar3.

PDF

Libraries and software for working with PDF files.

  • gutenex - Native PDF generation for Elixir.
  • pdf2htmlex - Convert PDF docs to beautiful HTML files without losing text or format.

Protocols

Special protocol and format libraries.

  • elixir_radius - RADIUS Protocol on Elixir.
  • ex_hl7 - Health Level 7 (HL7) is a protocol designed to model and transfer health-related data electronically.
  • exprotobuf - Protocol Buffers in Elixir, made easy.
  • message_pack - MessagePack Implementation for Elixir.
  • msgpax - MessagePack (de)serializer implementation for Elixir.

Queue

Libraries for working with event and task queues.

  • adap - Create a data stream across your information systems to query, augment and transform data according to Elixir matching rules.
  • amqp - Simple Elixir wrapper for the Erlang RabbitMQ client, based on Langohr.
  • dbus - A dumb message bus for sharing data between microservices decoupled using Redis.
  • elixir_talk - An Elixir client for beanstalkd.
  • exdisque - Elixir client for Disque, an in-memory, distributed job queue.
  • exq - Job processing library for Elixir - compatible with Resque/Sidekiq.
  • exrabbit - RabbitMQ bindings and DSL for Elixir.
  • heapq - A Heap-based Priority Queue Implementation in Elixir.
  • honeydew - Honeydew is a worker pool library for Elixir.
  • hulaaki - An MQTT 3.1.1 client library written in Elixir.
  • kafka_ex - Kafka client library for Elixir.
  • mqs - RabbitMQ client library, routing keys, RPC over MQ and other stuff.
  • pqueue - Erlang Priority Queue Implementation.
  • work_queue - Simple implementation of the hungry-consumer model in Elixir.

Release Management

Libraries and tools for release management.

  • bottler - 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.
  • changex - Automated changelog generation from GIT logs.
  • exrm - Automatically generate a release for your Elixir project.
  • exrm_heroku - Publish your Elixir releases to Heroku with ease.
  • exrm_rpm - Create a RPM for your Elixir release with ease.
  • heroku-buildpack-elixir - Heroku buildpack to deploy Elixir apps to Heroku.
  • relex - Erlang/Elixir Release Assembler.

REST and API

Libraries and web tools for developing REST-ful APIs.

  • detergent - An emulsifying Erlang SOAP library.
  • detergentex - Elixir binding to Detergent erlang library used to call WSDL/SOAP Services.
  • maru - Elixir copy of grape for creating REST-like APIs.
  • mazurka - hypermedia api toolkit.
  • signaturex - Simple key/secret based authentication for APIs.
  • urna - Urna is a simple DSL around cauldron to implement REST services.

Security

Libraries and tools regarding security.

  • safetybox - Security oriented helper functions for Elixir.
  • ssl_verify_hostname - Erlang library for certificate hostname validation based on RFC 6125.

Static Page Generation

Tools and libraries for generating static websites and content.

  • coil - Minimalistic static content engine.
  • obelisk - Static blog and website generator.

Statistics

Libraries around the topic statistics.

  • descriptive_statistics - Descriptive Statistics for Elixir.
  • mtx - MTX supports front-end API for tracking Historgram, Meter, Counter, Gauge, Timing keys.
  • statistics - Some basic statistical functions for Elixir.
  • wizard - Math and statistics functions for Elixir.

Templating

Libraries parsing and helping with templates

  • bbmustache - Binary pattern match Based Mustache template engine for Erlang/OTP.
  • eml - Library for writing and manipulating (HTML) markup in Elixir.
  • mustache - Mustache templates for Elixir.
  • mustachex - Mustache for Elixir - Logic-less templates.
  • templates - Helper library for adding templating to web applications.

Testing

Libraries for testing codebases and generating test data.

  • amrita - A polite, well mannered and thoroughly upstanding testing framework for Elixir.
  • blacksmith - Data generation framework for Elixir.
  • blitzy - A simple HTTP load tester in Elixir.
  • cobertura_cover - Writes a coverage.xml from mix test --cover file compatible with Jenkins' Cobertura plugin.
  • ecto_it - Ecto plugin with default configuration for repos for testing different ecto plugins with databases.
  • espec - BDD test framework for Elixir inspired by RSpec.
  • espec_phoenix - ESpec for Phoenix web framework.
  • ex_spec - BDD-like syntax for ExUnit.
  • excheck - Property-based testing library for Elixir (QuickCheck style).
  • factory_girl_elixir - Minimal implementation of Ruby's factory_girl in Elixir.
  • faker - Faker is a pure Elixir library for generating fake data.
  • gimei - Gimei is a pure Elixir library for generating Japanese fake data.
  • hound - Elixir library for writing integration tests and browser automation.
  • katt - KATT (Klarna API Testing Tool) is an HTTP-based API testing tool for Erlang.
  • kovacs - A simple ExUnit test runner.
  • meck - A mocking library for Erlang.
  • mix_erlang_tasks - Common tasks for Erlang projects that use Mix.
  • mix_eunit - A Mix task to execute eunit tests.
  • mix_test_watch - Automatically run your Elixir project's tests each time you save a file.
  • mixunit - An EUnit task for Mix based projects.
  • mock - Mocking library for the Elixir language.
  • pavlov - BDD framework for your Elixir projects.
  • plug_test_helpers - A simple testing DSL for Plugs.
  • ponos - Ponos is an Erlang application that exposes a flexible load generator API.
  • proper - PropEr (PROPerty-based testing tool for ERlang) is a QuickCheck-inspired open-source property-based testing tool for Erlang.
  • shouldi - Elixir testing libraries with nested contexts, superior readability, and ease of use.
  • tuco_tuco - TucoTuco helps you test your web application by running a web browser and simulating user interaction with your application.
  • white_bread - Story based BDD in Elixir using the gherkin syntax.

Text and Numbers

Libraries for parsing and manipulating text and numbers.

  • base58 - Base58 encoding/decoding for Elixir.
  • base58check - Base58Check encoding/decoding for Bitcoin.
  • base62 - Base62 encoder/decoder in pure Elixir.
  • bencoder - bencode in Elixir.
  • brcpfcnpj - Number format and Validate, to the documents brazilians (CPF/CNPJ).
  • calliope - An Elixir HAML parser.
  • chinese_translation - Translate between traditional chinese and simplified chinese based on wikipedia data, and translate chinese words/characters to pinyin (or slug with or without tone).
  • cidr - Classless Inter-Domain Routing (CIDR) for Elixir.
  • cirru_parser - Cirru Parser in Elixir.
  • cldr - cldr is a library to use information from CLDR data.
  • colorful - Elixir macros to decorate characters on CUI.
  • colors - Colors util written in Elixir.
  • convertat - An Elixir library for converting from and to arbitrary bases.
  • curtail - HTML tag-safe string truncation.
  • custom_base - Allow you to make custom base conversion in Elixir.
  • decimal - Arbitrary precision decimal arithmetic for Elixir.
  • dicer - A dice roller expression evaluator.
  • eden - EDN encoder/decoder for Elixir.
  • elixilorem - Lorem Ipsum generator for Elixir.
  • elixir_bencode - Bencode implemented in Elixir.
  • erldn - EDN format parser for the Erlang platform.
  • event_source_encoder - Encode data into EventSource compliant data.
  • ex_brace_expansion - Brace expansion, as known from sh/bash, in Elixir.
  • ex_rfc3986 - RFC3986 URI/URL parser.
  • exmoji - Emoji encoding Swiss Army knife for Elixir/Erlang.
  • expletive - Profanity filter library for Elixir.
  • expr - An Elixir library for parsing and evaluating mathematical expressions.
  • faust - Markov Text Generator for Elixir.
  • hashids - Hashids lets you obfuscate numerical identifiers via reversible mapping.
  • hexate - Simple module for Hex encoding / decoding in Elixir.
  • inflex - An Inflector library for Elixir.
  • kitsune - An Elixir library for transforming the representation of data.
  • ltsvex - LTSV parser implementation in Elixir.
  • mbcs - Wrapper for erlang-mbcs. This module provides functions for character encoding conversion.
  • mimetype_parser - parse mimetypes.
  • mt940 - MT940 (standard structured SWIFT Customer Statement message) parser for Elixir.
  • neotomex - A PEG implementation with a pleasant Elixir DSL.
  • number - Number is a pretentiously-named Elixir library which provides functions to convert numbers into a variety of different formats.
  • palette - A handy library for colouring strings in Elixir.
  • pinyin - Chinese Pinyin lib for Elixir.
  • porterstemmer - Porter Stemmer in Elixir.
  • pretty_hex - A binary hex dumping library in Elixir.
  • quickrand - Quick Random Number Generation.
  • ref_inspector - Referer parser library in Elixir. Fetching info from URLs.
  • secure_random - Convenience library for random base64 strings modeled after my love for Ruby's SecureRandom.
  • simetric - String similarity metrics for Elixir.
  • slugger - Slugger can generate slugs from given strings that can be used in URLs or file names.
  • tau - Provide the famous mathematical constant, tau, τ = 6.2831....
  • tomlex - A TOML parser for Elixir.
  • ua_inspector - User agent parser library like piwik/device-detector.
  • uuid - UUID generator and utilities for Elixir.
  • uuid_erl - Erlang Native UUID Generation.

Third Party APIs

Libraries for accessing third party APIs.

  • airbrake - An Elixir notifier for the Airbrake.
  • amazon_product_advertising_client - Amazon Product Advertising API client for Elixir.
  • balanced - Balanced API Client for Elixir.
  • bitpay - Elixir core library for connecting to bitpay.com.
  • cleverbot - Simple implementation of the Cleverbot API in Elixir.
  • commerce_billing - A payment-processing library for Elixir that supports multiple gateways (e.g. Bogus & Stripe).
  • currently - A tool to display cards currently assigns on Trello.
  • digoc - Digital Ocean API v2 Elixir Client.
  • docker - Elixir client for the Docker Remote API.
  • dogstatsd - An Elixir client for DogStatsd.
  • dpd_client - An API client for the DPD service.
  • dropbox - Dropbox Core API client for Elixir.
  • edgarex - Elixir interface for fetching SEC filings from EDGAR.
  • elixir_authorizenet - Unofficial client for the Authorize.Net merchant API.
  • everex - Evernote API client for Elixir.
  • everyoneapi - API Client for EveryoneAPI.com.
  • ex_omegle - A minimal Omegle chat client library for Elixir.
  • ex_statsd - A statsd client implementation for Elixir.
  • ex_twilio - Twilio API client for Elixir.
  • ex_twiml - Generate TwiML for your Twilio integration, right inside Elixir.
  • exgenius - Elixir library for the (undocumented) Rap Genius API.
  • exgravatar - An Elixir module for generating Gravatar URLs.
  • exgrid - interact with Sendgrid's API.
  • exjira - JIRA client library for Elixir.
  • exlingr - A Lingr client module.
  • exstagram - Elixir library for Instagram v1 API.
  • extwitter - Twitter client library for Elixir.
  • exurban - Elixir wrapper for UrbanAirship API.
  • facebook - Facebook Graph API Wrapper written in Elixir.
  • feedlex - Feedly RSS reader client for Elixir.
  • fluent_client - Minimalistic fluentd client.
  • forcex - Elixir library for the Force.com REST API.
  • forecast_io - Simple wrapper for Forecast.IO API.
  • google_sheets - Elixir library for fetching and polling Google spreadsheet data in CSV format.
  • hexoku - Heroku API client and Heroku Mix tasks for Elixir projects.
  • instrumental - An Elixir client for Instrumental.
  • keenex - A Keen.io API Client.
  • link_shrinkex - Elixir library for creating short URLs using Google's URL Shortener API.
  • m2x - Elixir client for the AT&T M2X, a cloud-based fully managed time-series data storage service for network connected machine-to-machine (M2M) devices and the Internet of Things (IoT). (Erlang Version).
  • mailchimp - A basic Elixir wrapper for version 3 of the MailChimp API.
  • mailgun - Elixir Mailgun Client.
  • mandrill - A Mandrill wrapper for Elixir.
  • marvel - CLI and Elixir API Client for the Marvel API.
  • mixpanel - An Elixir client for the Mixpanel HTTP API.
  • mixpanel_data_client - Client for interacting with the Mixpanel Data Export API.
  • mmExchangeRate - A simple exchange rate checker and calculator based on Central Bank of Myanmar Api.
  • nest - An Elixir library for using the Nest API, allowing integration with Nest Thermostats and other Nest devices.
  • opbeat - Elixir client for Opbeat.
  • pagexduty - A Pagerduty client for Elixir.
  • parse_client - Elixir client for the parse.com REST API.
  • parsex - ParsEx is an Elixir HTTP Client for communicating with Parse.com's Restful API.
  • pathway - An Erlang/Elixir client for the Trak.io REST API.
  • pocketex - Pocketex is an Elixir client for the Pocket read later service getpocket.com.
  • pusher - Elixir library to access the Pusher REST API.
  • qiita_ex - A Qiita API v2 Interface for Elixir.
  • qiniu - Qiniu SDK for Elixir.
  • reap - Reap is a simple Elixir library for working with the refheap API.
  • reddhl - An headline and link puller for Reddit and its various subreddits.
  • redtube - Redtube API Wrapper written in Elixir.
  • reporter - Reporter is simple reporting App reviews library. Support AppStore and GooglePlay.
  • riemann - A Riemann client for Elixir.
  • simplex - An Elixir library for interacting with the Amazon SimpleDB API.
  • slack - Slack real time messaging client in Elixir.
  • statix - Expose app metrics in the StatsD protocol.
  • stripe - An Elixir Library wrapping Stripe's API.
  • tagplay - Elixir client for Tagplay API.
  • telephonist - Elixir state machines for Twilio calls.
  • tentacat - Simple Elixir wrapper for the GitHub API.
  • traitify_elixir - An Elixir client library for the Traitify Developer's API.

Translations and Internationalizations

Libraries providing translations or internationalizations.

  • linguist - Elixir Internationalization library.
  • parabaikElixirConverter - ParabaikElixirConverter is just a Elixir version of Parabaik converter. It can convert from Unicode to Zawgyi-One and Zawgyi-One to Unicode vice versa.

Utilities

*Utilities libraries. *

  • ar2ecto - Ar2ecto is a set of mix tasks to help you migrate from ActiveRecord to Ecto.
  • erlware_commons - Additional standard library for Erlang.
  • exjprop - Elixir library for reading Java properties files from various sources.
  • fitex - FitEx is a Macro-Module which provides a bit of sugar for function definitions.
  • global - Wrapper of the Erlang :global module.
  • pubsub - A Publish-Subscribe utility library that implements a pub-sub mechanism to ease the burden of communication on the business logic processes.

Validations

Libraries and implementations for validation of data.

  • shape - A data validation library for Elixir based on Prismatic Scheme.
  • uk_postcode - UK postcode parsing and validation library.
  • vex - An extensible data validation library for Elixir.
  • voorhees - A library for validating JSON responses.

Version Control

Working with version control like git, mercury, subversion ...

  • gitex - Elixir implementation of the Git object storage, but with the goal to implement the same semantic with other storage and topics.

XML

Libraries and implementations working with XML.

  • erlsom - Erlsom is an Erlang library to parse (and generate) XML documents.
  • exmerl - Elixir wrapper for xmerl.
  • exml - Most simple Elixir wrapper for xmerl xpath.
  • exquery - A library for parsing HTML and querying elements within.
  • floki - A simple HTML parser that enables searching using CSS like selectors.
  • quinn - XML parser for Elixir.
  • spill - Parse and reformat XML into spill structure.
  • xml_builder - Elixir library for generating xml.
  • xmlrpc - Library for encoding and decoding XML-RPC for clients and servers.

YAML

Libraries and implementations working with YAML.

  • yamerl - YAML 1.2 parser in Erlang.
  • yomel - libyaml interface for Elixir.

Resources

Various resources, such as books, websites and articles, for improving your Elixir development skills and knowledge.

Books

Fantastic books and e-books.

Community

Getting in contact with the community via chat or mailinglist.

  • #elixir-lang - The IRC Channel #elixir-lang on Freenode.
  • elixir-lang-core - Mailinglist for Elixir Core development, use "talk" for questions and general discussions.
  • elixir-lang-talk - Official Elixir Mailinglist for questions and discussions.
  • FunctionalSlack - Functional Programming Slack Community: Clojure, Elixir, Erlang, Elm, Haskell, Julia, OCaml, Scala, F#.

Editors

Editors and IDEs useable for Elixir/Erlang

  • Alchemist - Elixir Tooling Integration Into Emacs.
  • Atom - Elixir language support for Atom.
  • atom-iex - Run an IEx session in Atom.
  • intellij_elixir - Elixir helpers for intellj-elixir, the Elixir plugin for JetBrains IDEs.
  • Jetbrains - Elixir for IntelliJ IDEA, RubyMine, WebStorm, PhpStorm, PyCharm, AppCode, Android Studio, 0xDBE.
  • Notepad++ - Elixir syntax highlighting for Notepad++.
  • TextMate - Elixir syntax highlighting for TextMate.
  • vim-elixir - Vim configuration files for Elixir.

Other Awesome Lists

Other amazingly awesome lists can be found at jnv/lists or bayandin/awesome-awesomeness.

  • Awesome Erlang - A curated list of awesome Erlang libraries, resources and shiny things.
  • Erlang Bookmarks - A collection of links for Erlang developers.

Reading

Elixir-releated reading materials.

Screencasts

Cool video tutorials.

  • Elixir Sips - Tiny screencasts for learning Elixir.
  • Meet Elixir - Walk through some features and concepts of Elixir by José Valim.

Styleguides

Styleguides for ensuring consistency while coding.

Websites

Useful web and Elixir-related websites and newsletters.

Contributing

Please see CONTRIBUTING for details.

About

A curated list of amazingly awesome Elixir and Erlang libraries, resources and shiny things.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Elixir 100.0%