Giter Club home page Giter Club logo

awesome-elixir's Introduction

Awesome Elixir Build Status

A curated list of amazingly awesome Elixir libraries, resources and shiny thing 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.
  • poolboy - A hunky Erlang worker pool factory.
  • sbroker - Sojourn-time based active queue management library.
  • workex - Backpressure and flow control in EVM processes.

Algorithms and Datastructures

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.

Applications

Standalone applications.

  • hyperledger - Reference server for the Hyperledger protocol.
  • poxa - Open Pusher implementation compatible with Pusher libraries.

Authentication

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.

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.

  • 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.

Caching

Libraries for caching data.

  • con_cache - ConCache is an ETS based key/value storage.

Cloud Infrastructure and Management

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.

Code Analysis

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.

Command Line Applications

Anything helpfull for building CLI applications.

  • anubis - Command Line application framework for Elixir.

Configuration

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.

Cryptography

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.

CSV

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.

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.
  • 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.

Debugging

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.

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.

Email

Working with Email and stuff.

  • mailer - A simple SMTP mailer.
  • mailibex - Library containing Email related implementations in Elixir: dkim, spf, dmark, mimemail, smtp.

Feeds

Libraries working with feeds like RSS or ATOM.

  • feeder - Parse RSS and Atom feeds.

Files and Directories

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.

Framework Components

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.

Frameworks

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.

Geolocation

Libraries for geocoding addresses and working with latitudes and longitudes.

  • geo - A collection of GIS functions for Elixir.

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.

  • 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.

Images

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.

JSON

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

Logging infos and messages.

  • syslog - Erlang port driver for interacting with syslog via syslog(3).

Macros

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.

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.
  • 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.

Networking

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.

ORM and Datamapping

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.

OTP

Libraries for working with OTP related things.

  • core - Library for selective receive OTP processes.
  • 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.

PDF

Libraries and software for working with PDF files.

  • gutenex - Native PDF generation for Elixir.

Protocols

Special protocol and format libraries.

Queue

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.

Release Management

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.

REST and API

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.

Security

Libraries and tools regarding security.

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

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.

Templating

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.

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.
  • 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.

Text and Numbers

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.

Third Party APIs

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.

Translations and Internationalizations

Libraries providing translations or internationalizations.

  • linguist - Elixir Internationalization library.

Validations

Libraries and implementations for validation of data.

  • vex - An extensible data validation library for Elixir.

XML

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.

Resources

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

Books

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

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 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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.