/awesome-erlang

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

Awesome Erlang Awesome Analytics

A curated list of amazingly awesome Erlang libraries, resources and shiny thing inspired by awesome-elixir.

Package Management

Libraries and tools for package and dependency management.

  • hex.pm - A package manager for the Erlang ecosystem.

Release Management

Libraries and tools for release management.

  • relx - A release assembler for Erlang.

Configuration Management

Libraries and tools related to configuration management.

  • stillir - Cache environment variables as Erlang app variables.

Codebase Maintenance

Libraries and tools to maintain a clean codebase.

  • elvis - Erlang Style Reviewer.

Web Frameworks

Web development frameworks.

  • Axiom - A micro-framework, inspired by Ruby's Sinatra.
  • ChicagoBoss - A server framework inspired by Rails and written in Erlang.
  • cowboy - A simple HTTP server.
  • Giallo - A small and flexible web framework on top of Cowboy.
  • MochiWeb - An Erlang library for building lightweight HTTP servers.
  • N2O - WebSocket Application Server.
  • Nitrogen - Framework to build web applications (including front-end) in pure Erlang.
  • Zotonic - High speed, real-time web framework and content management system.

Web Framework Components

Standalone component from web development frameworks.

  • cb_admin - An admin interface for Chicago Boss.
  • cb_websocket_controller - A template for implementing a Websocket controller for ChicagoBoss.
  • giallo_session - A session management library for the Giallo web framework.
  • simple_bridge - An abstraction layer providing a unified interface to popular Erlang web servers (Cowboy, Inets, Mochiweb, Webmachine, and Yaws).

HTTP

Libraries for working with HTTP and scraping websites.

  • bullet - Simple, reliable, efficient streaming for Cowboy.
  • gun - Erlang HTTP client with support for HTTP/1.1, SPDY and Websocket.
  • hackney - Simple HTTP client in Erlang.
  • ibrowse - Erlang HTTP client.
  • lhttpc - A lightweight HTTP/1.1 client implemented in Erlang.
  • shotgun - For the times you need more than just a gun.

Testing

Libraries for testing codebases and generating test data.

  • PropEr - A QuickCheck-inspired property-based testing tool for Erlang.
  • tracerl - Dynamic tracing tests and utilities for Erlang/OTP

Logging

Libraries for generating and working with log files.

Monitoring

Libraries for gathering metrics and monitoring.

  • entop - A top-like Erlang node monitoring tool.
  • eper - A loose collection of Erlang Performance related tools.
  • Exometer - An Erlang instrumentation package.
  • folsom - An Erlang based metrics system inspired by Coda Hale's metrics.
  • statsderl - A statsd Erlang client.
  • vmstats - Tiny Erlang app that works in conjunction with statsderl in order to generate information on the Erlang VM for graphite logs.

Deployment

Libraries and tools related to deployment of Erlang/OTP applications.

Distributed Systems

Tools for stress/load testing, latency issues, etc. across microservices.

  • Typhoon - Stress and load testing tool for distributed systems that simulates traffic from a test cluster toward a system-under-test (SUT) and visualizes related latencies.

Code Analysis

Libraries and tools for analysing, parsing and manipulation codebases.

  • Concuerror - Concuerror is a systematic testing tool for concurrent Erlang programs.
  • eflame - A Flame Graph profiler for Erlang.

Build Tools

Project build and automation tools.

  • rebar - Erlang build tool that makes it easy to compile and test Erlang applications, port drivers and releases.
  • rebar3 - A build tool for Erlang which can manage Erlang packages from Hex.pm. See more at rebar3.org
  • sync - On-the-fly recompiling for Erlang.

Geolocation

Libraries for geocoding addresses and working with latitudes and longitudes.

  • erl-rstar - An Erlang implementation of the R*-tree spacial data structure.
  • GeoCouch - A spatial extension for Couchbase and Apache CouchDB.
  • Teles - An Erlang network service for manipulating geographic data.

Debugging

Libraries and tools for debugging code and applications.

  • tx - An HTML Erlang term viewer, starts own webserver and displays any term you give it from your Erlang node.

Actors

Libraries and tools for working with actors and such.

  • poolboy - A hunky Erlang worker pool factory.

Date and Time

Libraries for working with dates and times.

  • erlang_localtime - Erlang library for conversion from one local time to another.
  • qdate - Erlang date, time, and timezone management: formatting, conversion, and date arithmetic.

ORM and Datamapping

Libraries that implement object-relational mapping or datamapping techniques.

  • boss_db - A sharded, caching, pooling, evented ORM for Erlang.
  • epgsql - PostgreSQL Driver for Erlang.
  • mysql-otp - MySQL/OTP – MySQL driver for Erlang/OTP.
  • pgsql_migration – PostgreSQL migrations for Erlang.

Queue

Libraries for working with event and task queues.

  • dq - Distributed Fault Tolerant Queue library.
  • ebqueue - Tiny simple blocking queue in erlang.
  • pqueue - Erlang Priority Queues.
  • tinymq - A diminutive, in-memory message queue for Erlang.

Authentication

Libraries for implementing authentications schemes.

  • oauth2 - Erlang Oauth2 implementation.

Text and Numbers

Libraries for parsing and manipulating text and numbers.

  • eql - Erlang with SQL or not.
  • jiffy - JSON NIFs for Erlang.
  • jsx - An erlang application for consuming, producing and manipulating json.
  • miffy - Jiffy wrapper which returns pretty maps.
  • qsp - Enhanced query string parser for Erlang.
  • rec2json - Generate JSON encoder/decoder from record specs.

REST and API

Libraries and web tools for developing REST-ful APIs.

  • leptus - Leptus is an Erlang REST framework that runs on top of cowboy.

Caching

Libraries for caching data.

  • cache - In-memory Segmented Cache

Third Party APIs

Libraries for accessing third party APIs.

  • restc - An Erlang REST client
  • oauth2c - An Erlang oAuth 2 client (uses restc)

Networking

Libraries and tools for using network related stuff.

  • barrel_tcp - barrel_tcp is a generic TCP acceptor pool with low latency in Erlang.
  • gen_rpc - A scalable RPC library for Erlang-VM based languages.
  • gen_tcp_server - A library that takes the concept of gen_server and introduces the same mechanics for operating a TCP server.
  • gossiperl - Language agnostic gossip middleware and message bus written in Erlang.
  • nat_upnp - Erlang library to map your internal port to an external using UNP IGD.
  • ranch - Socket acceptor pool for TCP protocols.

Internet of Things

Libraries and tools for interacting with the physical world.

  • GRiSP - Run the Erlang VM on an IoT board with many hardware interfaces and low-level drivers using a small realtime unikernel called RTEMS
  • lemma_erlang - A lemma for IDEO's Noam internet-of-things prototyping platform.

Algorithms and Datastructures

Libraries and implementations of algorithms and datastructures.

  • datum - A pure functional and generic programming for Erlang
  • erlando - A set of syntax extensions like currying and monads for Erlang.
  • statebox - Erlang state "monad" with merge/conflict-resolution capabilities.
  • riak_dt - Erlang library of state based CRDTs.

Translations and Internationalizations

Libraries providing translations or internationalizations.

Miscellaneous

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

  • erlang-history - Hacks to add shell history to Erlang's shell.
  • erld - erld is a small program designed to solve the problem of running Erlang programs as a UNIX daemon.

Resources

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

Websites

Useful web and Erlang-related websites and newsletters.

  • Erlang Bookmarks - All about erlang programming language [powerd by community].
  • Erlang Central - An awesome collections of erlang resource along with live community chat for discussing and seeking help.
  • Planet Erlang - Planet site/RSS feed of blog posts covering topics across the Erlang ecosystem.
  • Spawned Shelter - Erlang Spawned Shelter. A collection of the best articles, videos and presentations related to Erlang.

Books

Fantastic books and e-books.

Web Reading

General web-development-related reading materials.

Erlang Reading

Erlang-releated reading materials.

Screencasts

Cool video tutorials.

Contributing

Please see CONTRIBUTING for details.