Tag Archives: Elixir

Build and test a blazing fast JSON API with Phoenix, an Elixir framework


via Build and test a blazing fast JSON API with Phoenix, an Elixir framework.

Let’s build a JSON API that serves a list of contacts. We’ll be writing it using Elixir and Phoenix. Phoenix is a framework written in Elixir that aims to make writing fast, low latency web applications as enjoyable as possible. This will not go through installing Elixir or Phoenix. See the Phoenix Guides to get started.

Dayton Elixir


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


tests Made entries in categories also sorted alphabetically. 17 days ago
.gitignore Added script for checking formatting #41 a month ago
.travis.yml Fixing travis. a month ago
CONTRIBUTING.md Made entries in categories also sorted alphabetically. 17 days ago
README.md add learnelixir.com to Websites section 5 days ago

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.
  • poolboy – A hunky Erlang worker pool factory.
  • 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.
  • datastructures – A collection of protocols, implementations and wrappers to work with datastructures.
  • fsm – Finite state machine as a functional data structure.
  • 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.
  • the_fuzz – Fuzzy string matching algorithm implementations.
  • trie – Erlang Trie Implementation.

Authentication

Libraries for implementing authentications schemes.

  • apache_passwd_md5 – Apache/APR Style Password Hashing.
  • htpasswd – Apache httpasswd file reader/writer in Elixir.
  • oauther – An OAuth 1.0 implementation 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.
  • 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.

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

  • booter – Boot an Elixir application step by step.
  • dbg – Distributed tracing for Elixir.

Files and Directories

Libraries and implementations for working with files and directories.

  • dir_walker – DirWalker lazily traverses one or more directory trees, depth first, returning successive file names.
  • Radpath – Path library for Elixir inspired by Python’s Enhpath

Framework Components

Standalone component from web development frameworks.

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

Images

Libraries for working with and manipulating images.

  • exexif – Pure elixir library to extract tiff and exif metadata from jpeg files.
  • mogrify – An Elixir wrapper for ImageMagick command line.

JSON

Libraries and implementations working with JSON.

  • exjson – JSON parser and genarator 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.
  • 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.

Markdown

Libraries and tools working with Markdown and such.

  • discount – Elixir NIF for discount, a Markdown parser.
  • earmark – Markdown parser for Elixir.
  • stmd – Elixir NIF for stmd (C implementation), a CommonMark parser.

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.
  • 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.
  • exprint – A printf / sprintf library for Elixir, works as a wrapper for :io.format.
  • exquisite – LINQ-like match_spec generation for Elixir.
  • funnel – Streaming Elixir API built upon ElasticSearch’s percolation.
  • keys1value – Erlang set associative map for key lists.
  • mdef – Easily define multiple function heads 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.

ORM and Datamapping

Libraries that implement object-relational mapping or datamapping techniques.

  • amnesia – Mnesia wrapper for Elixir.
  • atlas – Object Relational Mapper for Elixir.
  • dexts – Disk Elixir Terms Storage, dest wrapper.
  • 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.
  • 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.

Protocols

Special protocol and format libraries.

  • exprotobuf – Protocol Buffers in Elixir made easy.
  • message_pack – MessagePack Implementation for Elixir.

Queue

Libraries for working with event and task queues.

  • exrabbit – RabbitMQ bindings and DSL for Elixir.
  • heapq – A Heap-based Priority Queue Implementation in Elixir.
  • pqueue – Erlang Priority Queue Implementation.

Release Management

Libraries and tools for release management.

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

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

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.
  • excheck – Property-based testing library for Elixir (QuickCheck style).
  • faker – Faker is pure Elixir library for generating fake data.
  • hound – Elixir library for writing integration tests and browser automation.
  • meck – A mocking library for Erlang.

Text and Numbers

Libraries for parsing and manipulating text and numbers.

  • 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.
  • decimal – Arbitrary precision decimal arithmetic for Elixir.
  • dicer – A dice roller expression evaluator.
  • event_source_encoder – Encode data into EventSource compliant data.
  • exmoji – Emoji encoding swiss army knife for Elixir/Erlang.
  • inflex – An Inflector library for Elixir.
  • pinyin – chinese pinyin lib for elixir.
  • quickrand – Quick Random Number Generation.
  • saltie – Saltie is a pseudo-encryption library primarily used for obfuscating numerical identifiers to opaque strings.
  • 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.
  • currently – A tool to display cards currently assigns on Trello.
  • 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.
  • exgravatar – An Elixir module for generating Gravatar urls.
  • extwitter – Twitter client library for elixir.
  • facebook – Facebook Graph API Wrapper written in Elixir.
  • forecast_io – Simple wrapper for Forecast.IO API.
  • hexoku – Heroku API client and Heroku Mix tasks for Elixir projects.
  • link_shrinkex – Elixir library for creating short URLs using Google’s URL Shortener API.
  • mailgun – Elixir Mailgun Client.
  • 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.
  • poxa – Open Pusher implementation compatible with Pusher libraries.
  • reap – Reap is a simple Elixir library for working with the refheap API.
  • simplex – An Elixir library for interacting with the Amazon SimpleDB 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.
  • quinn – XML parser for Elixir.
  • 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

  • Atom – Elixir language support for Atom.
  • Jetbrains – Elixir for IntelliJ IDEA, RubyMine, WebStorm, PhpStorm, PyCharm, AppCode, Android Studio, 0xDBE.

Other Awesome Lists

Other amazingly awesome lists can be found at jnv/lists.

  • Awesome Erlang – A curated list of awesome Erlang libraries, resources and shiny things.

Reading

Elixir-releated reading materials.

Screencasts

Cool video tutorials.

  • Elixir Sips – Tiny screencasts for learning Elixir.

Websites

Useful web and Elixir-related websites and newsletters.

Contributing

Please see CONTRIBUTING for details.