Giter VIP home page Giter VIP 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.

  • 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.
  • oauth2ex - Another OAuth 2.0 client library for Elixir.
  • oauther - An OAuth 1.0 implementation for Elixir.
  • xoauth2 - A simple XOAuth2 module for Elixir.

Build Tools

Project build and automation tools.

  • coffee_rotor - Rotor plugin to compile CoffeeScript files.
  • ExMake - A modern, scriptable, dependency-based build tool loosely based on Make principles.
  • reltool_util - Erlang reltool utility functionality application.
  • 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.

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.

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_cors - CORS Plug.
  • plug_jwt - Plug for JWT authentication.
  • plug_session_memcached - A very simple memcached session store 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.

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

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

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.
  • mixunit - An EUnit task for mix based projects.
  • mock - Mocking library for Elixir language.
  • 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.
  • 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.
  • 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.

  • balanced - Balanced Api Client for 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.
  • 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.
  • 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.
  • 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.
  • 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.

Styleguides

Styleguides for ensuring consistency while coding.

Websites

Useful web and Elixir-related websites and newsletters.

Contributing

Please see CONTRIBUTING for details.

awesome-elixir's People

Contributors

bayandin avatar bennyhallett avatar chatgris avatar drewolson avatar falood avatar grempe avatar h4cc avatar ka8725 avatar l4u avatar liveforeverx avatar lowks avatar optikfluffel avatar samplesampler avatar wkhere avatar

Watchers

 avatar  avatar

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.