A curated list of amazingly awesome Elixir libraries, resources and shiny thing inspired by awesome-php.
- Awesome Elixir
- Actors
- Algorithms and Datastructures
- Applications
- Authentication
- Bittorrent
- Build Tools
- Caching
- Cloud Infrastructure and Management
- Code Analysis
- Command Line Applications
- Configuration
- Cryptography
- CSV
- Date and Time
- Debugging
- Documentation
- Feeds
- Files and Directories
- Framework Components
- Frameworks
- Geolocation
- Hardware
- HTTP
- Images
- JSON
- Logging
- Macros
- Markdown
- Miscellaneous
- Networking
- ORM and Datamapping
- OTP
- Package Management
- Protocols
- Queue
- Release Management
- REST and API
- Security
- Static Page Generation
- Statistics
- Templating
- Testing
- Text and Numbers
- Third Party APIs
- Translations and Internationalizations
- Validations
- XML
- Resources
- Contributing
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.
- poolboy - A hunky Erlang worker pool factory.
- sbroker - Sojourn-time based active queue management library.
- workex - Backpressure and flow control in EVM processes.
Libraries and implementations of algorithms and datastructures.
- array - An Elixir wrapper library for Erlang's array.
- bloomex - A pure Elixir implementation of Scalable Bloom Filters.
- cuckoo - A pure Elixir implementation of Cuckoo Filters.
- datastructures - A collection of protocols, implementations and wrappers to work with datastructures.
- exkad - A kademlia implementation in Elixir.
- ezcryptex - Thin layer on top of Cryptex.
- fsm - Finite state machine as a functional data structure.
- graphmath - An Elixir library for performing 2D and 3D mathematics.
- hash_ring_ex - A consistent hash ring implemention for Elixir.
- 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.
- murmur - A pure Elixir implementation of the non-cryptographic hash Murmur3.
- sfmt - SIMD-oriented Fast Mersenne Twister (SFMT) for Erlang.
- 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.
Standalone applications.
- hyperledger - Reference server for the Hyperledger protocol.
- poxa - Open Pusher implementation compatible with Pusher libraries.
Libraries for implementing authentications schemes.
- apache_passwd_md5 - Apache/APR Style Password Hashing.
- aws_auth - AWS Signature Version 4 Signing Library for Elixir.
- 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.
- xoauth2 - A simple XOAuth2 module for Elixir.
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.
Project build and automation tools.
- coffee_rotor - Rotor plugin to compile CoffeeScript files.
- dismake - Mix compiler running make.
- ExMake - A modern, scriptable, dependency-based build tool loosely based on Make principles.
- reaxt - React template into your Elixir application for server rendering.
- reltool_util - Erlang reltool utility functionality application.
- remix - Automatic recompilation of mix code on file change.
- rotor - Super-simple build system for Elixir.
- sass_elixir - A sass plugin for elixir projects.
Libraries for caching data.
- con_cache - ConCache is an ETS based key/value storage.
Applications, tools and libraries for your own cloud service.
- Cloudi - CloudI is for back-end server processing tasks that require soft-realtime transaction.
- erlcloud - Cloud Computing library for erlang (Amazon EC2, S3, SQS, SimpleDB, Mechanical Turk, ELB).
- 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.
Libraries and tools for analysing, parsing and manipulation codebases.
- coverex - Coverage Reports for Elixir.
- dialyxir - Mix tasks to simplify use of Dialyzer in Elixir projects.
- excoveralls - Coverage report tool for Elixir with coveralls.io integration.
- exprof - A simple code profiler for Elixir using eprof.
Anything helpfull for building CLI applications.
- anubis - Command Line application framework for Elixir.
Libraries and tools working with configurations
- 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.
Encrypting and decrypting data
- comeonin - Password authorization (bcrypt) library for Elixir.
- elixir_tea - TEA implementation in Elixir.
- rsa -
public_key
cryptography wrapper for Elixir. - tea_crypto - Tiny Encryption Algorithm implementation.
Libraries and implementations working with CSV.
- cesso - CSV handling library for Elixir.
- csvlixir - A CSV reading/writing application for Elixir.
- ex_csv - CSV for Elixir.
Libraries for working with dates and times.
- block_timer - Macros to use :timer.apply_after and :timer.apply_interval with a block.
- chronos - An elixir date/time library.
- kalends - Kalends is a datetime library in pure Elixir with up-to-date timezone support using the Olson database.
- moment - Parse, validate, manipulate, and display dates in Elixir.
- timex - Easy to use Date and Time modules for Elixir.
- timex_interval - A date/time interval library for Elixir projects, based on Timex.
Libraries and tools for debugging code and applications.
- benchfella - 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 lookup Elixir documentation from the command line.
- eper - Erlang performance and debugging tools .
- exrun - Distributed tracing for Elixir with ratelimiting and simple macro-based interface.
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.
Working with Email and stuff.
- mailer - A simple SMTP mailer.
- mailibex - Library containing Email related implementations in Elixir: dkim, spf, dmark, mimemail, smtp.
Libraries working with feeds like RSS or ATOM.
- feeder - Parse RSS and Atom feeds.
Libraries and implementations for working with files and directories.
- cassius - Monitor linux file system events.
- dir_walker - DirWalker lazily traverses one or more directory trees, depth first, returning successive file names.
- exfswatch - Elixir version of fswatch base on fswatch.
- Radpath - Path library for Elixir inspired by Python's Enhpath.
Standalone component from web development frameworks.
- blaguth - Basic Access Authentication in Plug applications.
- cors_plug - An elixir plug that adds CORS headers to requests and responds to preflight requests (OPTIONS).
- exrecaptcha - Simple reCaptcha display/verify code for Elixir applications.
- flinch - Resource layer for Phoenix and Ecto projects for auto-generated RESTful CRUD APIs.
- plug - A specification and conveniences for composable modules in between web applications.
- plug_auth - Collection of authentication-related plugs.
- plug_cors - CORS Plug.
- plug_jwt - Plug for JWT authentication.
- plug_rails_cookie_session_store - Rails compatible Plug session store.
- plug_session_memcached - A very simple memcached session store for Elixir's plug.
- plugs - Collection of Plug middleware for web applications.
- plugsnag - Bugsnag notifier for Elixir's plug.
- trailing_format_plug - An elixir plug to support legacy APIs that use a rails-like trailing format.
- webassembly - Web DSL for Elixir.
Web development frameworks.
- dynamo - Dynamo is an experimental web framework that runs on Elixir.
- 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.
- relax - Simple Elixir implementation of a jsonapi.org server.
- sugar - Modular web framework for Elixir.
- weber - Web framework for Elixir inspired by Rails.
Libraries for geocoding addresses and working with latitudes and longitudes.
- geo - A collection of GIS functions for Elixir.
Hardware related things like I/O interfaces and such.
- elixir_ale - Elixir access to hardware I/O interfaces such as GPIO, I2C, and SPI.
Libraries for working with HTTP and scraping websites.
- cauldron - An HTTP/SPDY server as a library.
- exvcr - HTTP request/response recording library for elixir, inspired by VCR.
- 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.
Libraries for working with and manipulating images.
- exexif - Pure elixir library to extract tiff and exif metadata from jpeg files.
- imagineer - Image parsing in Elixir.
- mogrify - An Elixir wrapper for ImageMagick command line.
Libraries and implementations working with JSON.
- exjson - JSON parser and genarator in Elixir.
- exjsx - JSON for Elixir based on
jsx
. - 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.
- jsx - an erlang application for consuming, producing and manipulating json.
- jsxn - jsx but with maps.
- poison - Poison is a new JSON library for Elixir focusing on wicked-fast speed without sacrificing simplicity, completeness, or correctness.
Logging infos and messages.
- syslog - Erlang port driver for interacting with syslog via syslog(3).
Macros for faster and easier development. Sugar for your code.
- 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.
- rulex - Simple rule handler using Elixir pattern matching.
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.
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.
- 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.
- ex_rated - Simple and flexible rate-limiting for API's or anything.* ex2ms - Translates Elixir functions to match specifications for use with
ets
. - 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.
- growl - Simple wrapper for growl, the notification system for OSX.
- 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.
- radpath - A path library for Elixir inspired by Python path libraries.
- reprise - Simplified module reloader for Elixir.
- spawndir - Spawns processes from the file system.
- url_unroller - Simple url unroller (un-shortener) in elixir.
Libraries and tools for using network related stuff.
- chatty - A basic IRC client that is most useful for writing a bot.
- ExIrc - IRC client adapter for Elixir projects.
- ExPcap - PCAP parser written in Elixir.
- hedwig - XMPP Client/Bot Framework for Elixir.
- reagent - reagent is a socket acceptor pool for Elixir.
- socket - Socket wrapping for Elixir.
- wpa_supplicant - Elixir interface to the wpa_supplicant.
- yodel - Extensible Messaging & Presence Protocol (XMPP) client in Elixir.
Libraries that implement object-relational mapping or datamapping techniques.
- amnesia - Mnesia wrapper for Elixir.
- atlas - Object Relational Mapper for Elixir.
- craterl - Erlang client for crate.
- 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.
- exleveldb - Elixir wrapper around Basho's eleveldb module for LevelDB.
- exredis - Redis client for Elixir.
- exts - Elixir Terms Storage, ets wrapper.
- hstore - Hstore support for Postgrex.
- mariaex - MariaDB/MySQL driver for Elixir.
- postgrex - PostgreSQL driver for Elixir.
- ssdb_elixir - ssdb client for Elixir with focus on performance.
- tirexs - An Elixir based DSL for managing the ElasticSearch related stuff.
Libraries for working with OTP related things.
- core - Library for selective receive OTP processes.
- libex_config - Helpers for accessing OTP application configuration.
Libraries and tools for package and dependency management.
- Hex - A package manager for the Erlang ecosystem.
Libraries and software for working with PDF files.
- gutenex - Native PDF generation for Elixir.
Special protocol and format libraries.
- elixir_radius - RADIUS Protocol on Elixir.
- exprotobuf - Protocol Buffers in Elixir made easy.
- message_pack - MessagePack Implementation for Elixir.
Libraries for working with event and task queues.
- 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.
- pqueue - Erlang Priority Queue Implementation.
- work_queue - Simple implementation of the hungry-consumer model in Elixir.
Libraries and tools for release management.
- changex - Automated changelog generation from git logs.
- exrm - Automatically generate a release for your Elixir project.
- exrm_rpm - Create a rpm for your elixir release with ease.
Libraries and web tools for developing REST-ful APIs.
- maru - Elixir copy of grape for creating REST-like APIs.
- signaturex - Simple key/secret based authentication for APIs.
- urna - Urna is a simple DSL around cauldron to implement REST services.
Libraries and tools regarding security.
- safetybox - Security oriented helper functions for Elixir.
- ssl_verify_hostname - Erlang library for certificate hostname validation based on rfc6125.
Tools and libraries for generating static websites and content.
Libraries around the topic statistics.
- descriptive_statistics - Descriptive Statistics for Elixir.
- statistics - Some basic statistical functions for Elixir.
Libraries parsing and helping with templates
- eml - Library for writing and manipulating (html) markup in Elixir.
- templates - Helper library for adding templating to web applications.
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.
- 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 pure Elixir library for generating 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_eunit - A mix task to execute eunit tests.
- mixunit - An EUnit task for mix based projects.
- mock - Mocking library for 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.
- shouldi - Elixir testing libraries with nested contexts, superior readability, and ease of use.
Libraries for parsing and manipulating text and numbers.
- base58 - Base58 encoding/decoding for Elixir.
- bencoder - bencode in elixir.
- calliope - An elixir haml parser.
- 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.
- decimal - Arbitrary precision decimal arithmetic for Elixir.
- dicer - A dice roller expression evaluator.
- elixilorem - Lorem Ipsum generator for Elixir.
- erldn - EDN format parser for the erlang platform.
- event_source_encoder - Encode data into EventSource compliant data.
- exmoji - Emoji encoding swiss army knife for Elixir/Erlang.
- 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.
- pinyin - chinese pinyin lib for elixir.
- pretty_hex - A binary hex dumping library in Elixir.
- quickrand - Quick Random Number Generation.
- simetric - String similarity metrics for Elixir.
- tau - Provide the famous mathematical constant, tau, τ = 6.2831....
- tomlex - A TOML parser for elixir.
- uuid - UUID generator and utilities for Elixir.
- uuid_erl - Erlang Native UUID Generation.
Libraries for accessing third party APIs.
- amazon_product_advertising_client - Amazon Product Advertising API client for Elixir.
- balanced - Balanced Api Client for Elixir.
- 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.
- dogstatsd - An Elixir client for DogStatsd.
- dpd_client - An API client for the DPD service.
- dropbox - Dropbox Core API client for Elixir.
- ex_omegle - A minimal Omegle chat client library for Elixir.
- ex_statsd - A statsd client implementation for Elixir.
- exgenius - Elixir library for the (undocumented) Rap Genius API.
- exgravatar - An Elixir module for generating Gravatar urls.
- exgrid - interact with Sendgrid's API.
- exlingr - A Lingr client module.
- extwitter - Twitter client library for elixir.
- exurban - Elixir wrapper for UrbanAirship API.
- facebook - Facebook Graph API Wrapper written in Elixir.
- fluent_client - Minimalistic fluentd client.
- forcex - Elixir library for the Force.com REST API.
- forecast_io - Simple wrapper for Forecast.IO API.
- 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.
- mailgun - Elixir Mailgun Client.
- mandrillex - A Mandrill wrapper for Elixir.
- mixpanel - An Elixir client for the Mixpanel HTTP API.
- 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.
- qiita_ex - A Qiita API v2 Interface for Elixir.
- reap - Reap is a simple Elixir library for working with the refheap API.
- simplex - An Elixir library for interacting with the Amazon SimpleDB API.
- slack - Slack real time messaging client in Elixir.
- stripe - An Elixir Library wrapping Stripe's API.
- traitify_elixir - An Elixir client library for the Traitify Developer's API.
Libraries providing translations or internationalizations.
- linguist - Elixir Internationalization library.
Libraries and implementations for validation of data.
- vex - An extensible data validation library for Elixir.
Libraries and implementations working with XML.
- exmerl - Elixir wrapper for xmerl.
- 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.
Various resources, such as books, websites and articles, for improving your Elixir development skills and knowledge.
Fantastic books and e-books.
- Elixir for the functional Rubyist - Not yet released. By Johnny Winn.
- Elixir in Action - A brief intro to the language followed by a more detailed look at building production-ready systems in Elixir by Saša Jurić (2014).
- Erlang in Anger - This book intends to be a little guide about how to be the Erlang medic in a time of war by Fred Hebert (2014).
- Introducing Elixir - A gentle introduction to the language, with lots of code examples and exercises by Simon St. Laurent and J. David Eisenberg (2013).
- Programming Elixir - The book provides introduction to functional and concurrent programming with Elixir by Dave Thomas (2014).
- The Little Elixir & OTP Guidebook - A book for learning Elixir and OTP through small to medium-sized projects by Benjamin Tan Wei Hao (2014).
- Études for Elixir - A collection of exercises to program in Elixir by J. David Eisenberg (2013) (Github Repo).
Editors and IDEs useable for Elixir/Erlang
- Alchemist - Elixir Tooling Integration Into Emacs.
- Atom - Elixir language support for Atom.
- Jetbrains - Elixir for IntelliJ IDEA, RubyMine, WebStorm, PhpStorm, PyCharm, AppCode, Android Studio, 0xDBE.
- Notepad++ - Elixir syntax highlighting for Notepad++.
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.
Elixir-releated reading materials.
- Elixir Cheat-Sheet - A Elixir cheat sheet by Andy Hunt & Dave Thomas.
Cool video tutorials.
- Elixir Sips - Tiny screencasts for learning Elixir.
- Meet Elixir - Walk through some features and concepts of Elixir by José Valim.
Styleguides for ensuring consistency while coding.
- The Elixir Style Guide - A community driven style guide for Elixir.
Useful web and Elixir-related websites and newsletters.
- 30 Days of Elixir - A walk through the Elixir language in 30 exercises.
- Benjamin Tan - Learnings & Writings - A blog consisting of mostly Elixir posts.
- Elixir China - Chinese Elixir website elixir-cn.com.
- Elixir Github Repository - The project repository.
- Elixir Github Wiki - The projects wiki, containing many useful information.
- Elixir Job Board - A job board for Elixir, written using Phoenix.
- Elixir Quiz - Weekly programming problems to help you learn Elixir.
- How i start - Elixir - Explanation and intro to Elixir by José Valim.
- Learn Elixir - A blog with posts focusing on Elixir and Phoenix Framework.
Please see CONTRIBUTING for details.