Awesome
BEAM Toolbox
Curated BEAM language libraries by category. All killer, no filler.
Websites
- ElixirToolbox.dev
- ErlangToolbox.com (coming soon)
About
The BEAM ecosystem is vast and hard to navigate. For any task you must evaluate options for:
- Erlang stdlib (OTP)
- Elixir stdlib
- Rebar packages (Erlang)
- Hex packages (Elixir)
- Rebar packages (other languages like Gleam)
Lucky for you, we've done the hard work of curating the best available libs for each problem class. Disagree with our choices? If you need more options search the Hex package manager website.
The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer. –author unknown
Sections
- General Libraries
- Plug
- Phoenix
- Absinthe
- Ecto
- Nerves
- Cowboy
- Erlang Specific
- Rebar
- Languages Integration
- Tooling
General Libraries
- 2D/3D math [ex]
- A* pathfinding algorithm [ex]
- ABNF grammar parser [ex]
- Address parsing (US) [ex]
- API testing [erl]
- API versioning [ex]
- Apple push notifications server [erl]
- ArangoDB client [ex]
- Arbitrary precision decimal arithmetic [ex] [erl]
- Article readable content extraction [ex]
- ASCII text tables [ex]
- AsciiDoc documentation parser [erl]
- Authentication, for APIs (simple key/secret) [ex]
- Authentication, OAuth 2.0 (Google Cloud Service) [ex]
- Authentication, OAuth 2.0 (multi-provider) [ex]
- Authentication, OAuth 2.0, client [ex] [erl] [erl]
- Authentication, OAuth 2.0, Google [ex]
- Authentication, OAuth 2.0, server [erl]
- Authentication, OpenID Connect client [ex] [erl]
- Authentication, passwordless and 2FA/multi-factor [ex]
- Authentication, Security Assertion Markup Language (SAML) [erl]
- Authorization, rule based [ex] [ex]
- Authorization/permissions [ex]
- Avro message encode/decode [ex]
- AWS Signature V4 [ex] [erl]
- Background jobs (CloudI) [erl]
- Background jobs queue (Mnesia) [ex]
- Background jobs queue (PostgreSQL) [ex]
- Background jobs queue (Redis) [ex] [ex]
- Background jobs queue (Resque/Sidekiq) [ex]
- Background jobs queue [ex]
- Background tasks runner [ex]
- Base conversion [ex]
- Base58 encoding/decoding for Elixir [ex] [erl]
- Base62 encoder/decoder [ex] [ex] [erl]
- Base64 encode/decode [ex]
- Base64 encode/decode, C NIF [erl]
- Batch message passing between Erlang/Elixir nodes [ex]
- Beanstalkd client [ex]
- Behaviours reflection [ex]
- Benchmarking [ex] [erl]
- Bencode encoder/decoder, BitTorrent [ex]
- Bidirectional map and multimap [ex]
- Binary data compression (Huffman encoding) [ex]
- Binary hex dumping [ex]
- Binary pretty printer [erl]
- Binary search [erl]
- BIP39 private key mnemonics [ex]
- Bitmaps [ex]
- Bloom filters [ex] [erl]
- Bluetooth [ex] [ex]
- BN128 elliptical curves [ex]
- Browser detection [ex]
- BSON [ex]
- Burner (temporary) email address detector [ex]
- Business forms generator [erl]
- Business logic components framework [ex]
- Business rules, specification pattern [ex]
- Caching (ETS) [ex] [erl]
- Caching, adapter based [ex]
- Caching, in-memory KV store [erl]
- Calendar recurring events [ex]
- Cassandra CQL client [erl]
- Chaos engineering testing [erl] [erl]
- Charting/graphing [ex]
- Chat bot framework, XMPP [ex]
- Checksum (Luhn algorithm) [ex]
- Chess for game servers [erl]
- Circuit breaker [ex]
- Circular buffer [ex]
- Classless Inter-Domain Routing (CIDR) [ex] [ex] [erl]
- Cloudl process groups [erl]
- Cluster automatic formation/healing [ex] [ex]
- Cluster automatic node discovery [erl]
- Cluster RPC [erl]
- Clustered app distribution [ex]
- Clustered app testing [ex]
- Code profiler [ex]
- Code reloader [ex] [ex]
- Colorized terminal output [erl]
- Command line argument parsing [ex]
- Command-line (CLI) app framework [erl]
- Command-line (CLI) options parser [erl]
- Command-line (CLI) progress bars and spinners [ex]
- common_test utilities [erl]
- Configuration at runtime [ex] [ex]
- Connection processes behaviour [ex]
- Consensus protocol, HoneyBadgerBFT [erl]
- Consensus protocol, raft [erl]
- Coordinate conversion with OSGeo PROJ.4 [ex]
- CouchDB client [erl]
- Country information (ISO 3166) [ex]
- Coverage Reports for Elixir [ex]
- CQRS/Event Store [ex] [ex]
- CRDT [ex]
- Cron-like job scheduler [ex] [erl] [erl]
- Crontab expressions [ex]
- Cryptocurrency blockchain algorithms [ex]
- CSV encode/decode [ex] [ex]
- Cuckoo filters [erl]
- Data structure to HTML [ex]
- Data validation [ex] [ex] [ex]
- Database enumerable type [ex]
- Date/time advanced formatting [ex]
- Date/time helpers [ex]
- Date/time parser [ex]
- Date/timezone handling [erl]
- Debugger [erl]
- Deep merge for data structures [ex]
- Dependency injection [ex]
- Dependency security audit [ex]
- Deprecation logger [ex]
- Dice roll simulator [ex]
- Directory traversal [ex]
- Distributed application server, TCP/MQTT/WebSocket [erl]
- Distributed in-memory Caching with pub/sub [erl]
- Distributed leader election [erl]
- Domain model validations [ex]
- Domain modelling typesafe structs [ex]
- EDN encoder/decoder [ex] [erl]
- Elasticsearch bulk inserter [ex]
- Elasticsearch client [ex] [ex] [ex]
- Email antivirus, ClamAV client [ex] [ex]
- Email delivery [ex] [ex] [ex]
- Email message builder (RFC2822) [ex]
- Email send and receive [ex]
- Email templates, responsive [ex]
- Emoji clock generator [ex]
- Emoji encoding [ex]
- Encryption (Mix) [ex]
- Encryption [ex]
- Encryption for binaries [ex]
- Enumerate deep data structures [ex]
- Environment variable caching [erl]
- Environment variables (.env) [ex]
- Environment variables helper [ex]
- EPUB generator/parser [ex]
- Erlang Term Storage (ETS) based key/value storage [ex]
- Erlang Term Storage (ETS) match specifications from Elixir functions [ex]
- Erlang Term Storage (ETS) table persistence [ex] [ex]
- Erlang terms memory info [erl]
- Error handling/exceptions [ex]
- etcd client [erl]
- Ethereum ABI [ex]
- Ethereum client [ex]
- Ethereum RLP (Recursive Length Prefix) encoding [ex]
- Ethereum RPC client [ex]
- Event bus [ex]
- Event processing and monitoring [erl]
- Event sampler [erl]
- Exceptions notifier [ex]
- EXIF metadata [ex] [erl]
- Exponential backoff, linear retry, wait [ex] [erl]
- ExUnit assertions [ex]
- ExUnit assertions macros [ex]
- ExUnit expression result output (Power assert) [ex]
- ExUnit recursive matching [ex]
- ExUnit test desktop notifications [ex]
- Fake data generator [ex]
- Faktory background job server client [ex]
- Fast Mersenne Twister (SFMT) for SIMD [erl]
- Feature flags [ex]
- Feature/integration tests, Webdriver [ex] [ex]
- FFmpeg video processing [ex]
- File attachment/storage/upload [ex] [ex]
- File sizes, human adable [ex]
- File system change events [ex]
- File system manipulation [ex]
- File type/format detection [ex]
- Filename sanitization [ex]
- Finite State Machine (FSM) [ex]
- Finite State Machine (FSM), graph generator [ex]
- Folsom metrics storage (DalmatinerDB) [erl]
- FreeSWITCH event sockets [ex]
- FTP client [erl]
- Functional programming helpers (combinators, currying, partial application) [ex]
- Fuzzy string matching [ex]
- Game networking, RakNet client [ex]
- Generic programming/option types/data structures [erl]
- Genetic algorithms [ex]
- GenServer helpers [ex]
- Geocoder with cache [ex]
- Geographic Information System (GIS), WKB/WKT/GeoJSON encode/decode [ex]
- Geohash encode/decode [ex] [ex]
- Geolocation distance/bearing calculation [ex]
- Geometric/geographic distance calculations [ex]
- Geometry spacial relationship calculator [ex]
- GGSN/P-GW [erl]
- Git changelog generation [ex]
- Git hooks [ex]
- Graph data structure [ex]
- GraphQL client [ex]
- Group actions [ex]
- gRPC [ex] [erl]
- GTIN code validation [ex]
- GUI [ex] [erl]
- Haiku-like random ID generator [ex]
- Hardware I/O interfaces for GPIO, I2C, SPI [ex]
- Hashing algorithm, consistent [erl]
- Hex code encoding/decoding [ex]
- Hex semantic versioning [ex]
- Hostname verification [erl]
- Hot reload/recompile on file system changes [erl] [erl]
- HTML builder DSL [ex]
- HTML entity string decode/encode [ex]
- HTML parser [ex]
- HTML parser and query [ex] [ex]
- HTML sanitizer [ex]
- HTML tag-safe string truncation [ex]
- HTML to PDF conversion [ex] [ex] [ex]
- HTTP client [ex] [ex] [ex] [erl]
- HTTP client, REST [erl]
- HTTP cookies [ex]
- HTTP middleware [ex]
- HTTP performance/load testing [ex]
- HTTP proxy [ex] [erl]
- HTTP request/response recording [ex]
- HTTP response mocks [ex]
- HTTP web server and client [ex]
- HTTP/1.1, HTTP/2 and Websocket client [erl] [erl]
- HTTP/SSH request/response recording [ex]
- HTTP2 client [ex] [erl]
- Human friendly ID generator [ex]
- IBAN/BIC code validation [ex]
- ICalendar files [ex]
- ID hashing [ex]
- Identicons generator [ex]
- Image manipulaton/conversion [ex] [erl]
- Image metadata and validation [ex]
- Image processing (GraphicsMagick) [erl]
- Image processing (ImageMagick) [ex]
- Interactive code notebook (like Jupyter) [ex]
- Interactive computing (Jupyter notebook) [ex]
- Internationalization and localization [ex] [ex] [ex]
- Internationalized Domain Names in Applications (IDNA) [erl]
- IoT framework [ex] [erl] [erl]
- IoT GUI framework [ex]
- IRC bot framework [ex]
- IRC client adapter [ex]
- Jalaali calendar implementation [ex]
- Japanese writing systems conversion [ex] [ex]
- Java property file reading [ex]
- JSON encoder/decoder [ex] [erl] [erl] [erl] [erl] [[erl]]
- JSON Object Signing and Encryption (JOSE) [erl]
- JSON parser, streaming [ex]
- JSON validation [erl] [erl]
- JSON Web Tokens (JWT) (RFC 7519) [ex]
- JSON:API documents [ex]
- JSONAPI.org serialization [ex]
- Juypter kernels [erl] [erl]
- Keyword list option validator [ex]
- Kubernetes client [ex] [erl]
- Kubernetes Operator Development Framework [ex]
- Lager backend [ex]
- LDAP [ex] [ex]
- Letter user avatar generation [ex]
- Lexers [ex]
- Licensing enumeration for project dependencies [ex]
- Line segment intersection calculator [ex]
- Load generator [erl]
- Logfmt encoding/decoding [ex]
- Logger file backend [ex]
- Logger for Graylog Extended Log Format (GELF) [ex] [ex]
- Logging [erl]
- Logging framework adapter [erl]
- Logstash JSON formatter [ex] [ex]
- Lorem Ipsum generator [ex] [ex]
- LRU Cache [ex]
- LZ4 data compression [erl]
- Markdown parser (NIF) [ex]
- Markdown parser (pure Elixir) [ex]
- Markdown parser, AST based [ex]
- Mathematical expressions evaluator [ex] [erl]
- Mathematical helper functions [ex] [erl]
- Matrix math [ex]
- Merkel map [ex]
- Merkle hash trees [ex]
- Message queues framework (SQS/AMQP) [ex]
- MessagePack [ex]
- Metric store [erl]
- Metrics system interfaces [erl]
- MIME type extension mappins [erl]
- MIME type parsing [erl] [erl]
- Mnesia clustering [erl]
- Mnesia transactions, raft consensus (RabbitMQ) [erl]
- Mobile optimized silent video conversion [ex]
- Monads [ex]
- Money handling/storing [ex]
- MQTT client [ex]
- Multi-stage data ingestion/processing pipelines [ex]
- Multimedia stream processing [ex]
- Murmur3 non-cryptographic hash algorithm [ex]
- Music live coding [erl]
- Mutation testing [ex]
- MySQL server protocol [erl]
- Naive Bayes string matching algorithm [ex] [ex] [ex]
- Nanomsg networking client [erl]
- NAT (Network Address Translation) [erl]
- NATS distributed messaging client [ex]
- Natural language detection [ex] [ex]
- Nested data structure utilities [ex]
- Nested data structures at compile time [ex]
- Nested map difference [ex]
- Nested map take/drop [ex]
- Notification dispatch [ex]
- NSQ distributed messaging client [ex]
- Number formats conversion, currency [ex]
- Numeric types wrapper [ex]
- Object Relational Mapper (ORM) [ex] [erl]
- Office documents conversion (LibreOffice) [ex]
- One-time passwords (OTP) [erl] [erl] [erl]
- Onetime key-value store [ex]
- OpenTelemetry tracing API [erl]
- OpenTelemetry tracing SDK [erl]
- OpenTracing [erl]
- Options validation [ex]
- OS processes/ports/command line runner [ex] [ex] [ex] [erl]
- Pagination [ex]
- Pandoc file conversion client [ex] [ex]
- Parallel computations on collections [ex]
- Parallel streams [ex]
- Parallel worker and capacity limiting [erl]
- Parse transform utilities [erl]
- Parser combinators [ex]
- Partition tester [ex]
- Paseto (Platform-Agnostic Security Tokens) [ex]
- Password hashing (argon2, bcrypt, pbkdf2_sha512) [ex]
- Password hashing (Bcrypt) [erl]
- Password hashing (PBKDF2) [erl]
- Password pwn check [ex]
- Password strength estimation [ex]
- Payment processing (Stripe) [ex]
- PCAP parser [ex]
- PDF generator, from HTML [ex] [ex]
- PEG implementation [erl]
- Petri nets [erl]
- Phone number parser [ex] [ex]
- PID file for UNIX [ex]
- PNG image creation [erl]
- Pop3 email client including attachments [ex] [erl] [erl]
- PortAudio bindings [erl]
- PostgreSQL driver [ex] [erl] [erl]
- PostgreSQL migrations [erl]
- Pre-signed URLs for client-side uploading [ex]
- printf/sprintf string formatting [ex]
- Priority queue [erl]
- Process custom parenting [ex]
- Process registry, distributed [ex] [erl]
- Producer/consumer pipelines with back-pressure [ex]
- Profanity filter [ex]
- Project configuration [ex]
- Prometheus client [erl]
- Prometheus process metrics exporter [erl]
- Prometheus/Grafana dashboards for Elixir libs [ex]
- Property testing [ex] [erl]
- Protocol Buffers (Protobuf) [ex] [ex] [ex] [erl]
- Publish-Subscribe [ex]
- Push notifications (iOS/Android) [ex]
- QR code generator [ex]
- Query string encoding [ex]
- Queue pooling (Sojourn-time) [erl]
- R* trees [erl]
- RabbitMQ client [ex] [ex] [ex] [erl]
- RabbitMQ producers/consumers [ex] [ex]
- RADIUS Protocol [ex] [erl] [erl]
- Random Base64 strings generator [ex]
- Random Number Generation (RNG) [erl] [erl]
- Random words generator [ex]
- Rate-limiter [ex] [ex] [erl] [erl]
- Rational numbers [ex]
- RDF data model [ex]
- RDF support for JSON-LD [ex]
- React server-side rendering (SSR) [ex] [ex]
- Redis client (cluster mode) [erl] [erl]
- Redis client [ex] [erl] [erl]
- Redis pooling/sharding [ex]
- Release configuration [ex]
- Release packaging [ex] [ex]
- Releases (Debian, RPM) [ex]
- Releases with hot-code upgrades [ex]
- Repeating dates [ex]
- REPL development, auto test runner [ex]
- Resource pool [ex]
- REST API framework [erl] [erl]
- REST API testing [erl]
- Result/option monads [ex]
- Riemann network monitor client [ex] [erl]
- Robots.txt parser [erl]
- RocksDB client [erl]
- RSASSA-PSS crypto algorithm [erl]
- RSS feed parser, Rust NIF wrapper [ex]
- RSS/ATOM feed builder (RFC4287) [ex]
- RSS/ATOM feed parser [ex] [erl]
- Run command on file system change [ex]
- Russian names inflection [ex]
- Saga development [ex]
- Sass [ex]
- Semantic versions [ex]
- Sentiment analysis (AFINN-165/emojis) [ex]
- Set associative map for key lists [erl]
- Shell/system calls [erl]
- Short-lived keys checking [erl]
- SIP protocol [ex] [erl]
- SipHash algorithm [ex]
- Sitemap generator [ex]
- HTML templates [ex]
- HTML templates, Slim-like [ex]
- Slug generator [ex]
- SMPP 3.4 protocol [ex]
- SMS client [ex]
- SMTP email client [ex]
- SMTP server/client [erl]
- Snappy compression [erl]
- SOAP client [erl]
- Socket wrapping [ex]
- SOCKS4/SOCKS5 proxy server [erl]
- SPARQL query language client [ex] [ex]
- Spell checker (English) [erl]
- Sphinx full text search client [ex] [erl]
- Spinlocks [erl]
- SQL queries with parameterized .sql files/YesQL [ex] [ex] [erl]
- SQL query generator DSL [ex]
- SSH helpers [ex]
- SSH tasks runner [ex]
- SSL/TLS certificates, CA bundle [erl]
- SSL/TLS certificates, Let's Encrypt [ex]
- SSL/TLS driver [erl]
- SSL/TLS verification [erl]
- Standard Library [ex] [erl]
- State machines [ex] [ex] [ex]
- Static site generator [ex] [ex]
- Static site generator, blog engine [ex]
- Statistical functions [ex]
- Statsd metrics [ex]
- Stock market trading client [ex]
- Stream processor [erl]
- String case conversion [ex]
- STUN/TURN [erl]
- SVG drawing [ex]
- syslog(3) port driver [erl]
- systemd integration [erl]
- Tasks progress tracking [ex]
- TCP network resiliency tester, Toxiproxy [ex]
- TCP socket acceptor pool [erl]
- TCP sockets [erl]
- Tel URI parser (RFC3966) [ex]
- Telemetry polling [ex]
- Telemetry/metrics/instrumentation [erl] [ex]
- Telemtry metrics interface [ex]
- Telephone numbers [ex]
- Template language (Django) [erl] [erl]
- Template language (Mustache) [ex] [erl] [erl]
- Temporary/burner email detector [ex]
- Tensor math [ex]
- Tensorflow bindings [ex]
- Terminal UI (TUI), Command-line interface (CLI) kit [ex]
- Test coverage reports [ex]
- Test framework, Behavioral Driven Design (BDD) [ex]
- Test mocks [ex] [ex] [ex] [ex] [erl]
- Testing framework [ex]
- Testing stubs [ex]
- Testing, feature/browser [ex]
- Testing, HTTP request mocks [erl]
- Testing, HTTP request/response faker [ex]
- Testing, parameterized [ex]
- Testing, story based [ex]
- Testing, trace-based [erl]
- Tests auto run on file save [ex]
- Thrift protocol for service RPC [erl] [erl]
- Thumbnails for image/video screenshots [ex]
- Time periods and business calendars [ex]
- Time periods/slots [ex]
- Time zone conversion [erl]
- Time zone lookup by geo coordinates [ex]
- Timezone database [ex]
- Tiny Encryption Algorithm (TEA) [erl]
- TOML [ex]
- Tor client [ex]
- Tracing and debugging [ex] [erl] [erl]
- Tracing, platform-agnostic [ex]
- Tracing/profiling [erl]
- Tracing/stats collection [erl]
- Transactions, distributed [ex]
- Trie data structure [erl]
- U2F (Universal Second Factor) [ex]
- UK postcode parsing/validation [ex]
- Units converter [ex]
- URI template processor (RFC6570 compliant) [ex]
- URL referer parsing [ex]
- URL slugs [ex]
- URL wildcard matching [ex]
- URL-friendly unique ID generator [ex]
- User agent parser [ex]
- Utility functions library [erl]
- UUID (URL-safe) [ex]
- UUID generator [ex] [erl]
- Validation, schemas [erl]
- Vectors/matrices/tensors [ex]
- Videogame Artificial Intelligence (AI) [ex]
- Virtual DOM diff/patching [ex]
- Virtualization, libvirt [erl] [erl]
- Web and RSS/Atom scraping [ex]
- Web app framework [ex] [erl] [erl] [erl] [erl] [erl]
- Web app framework, micro [erl]
- Web application monitoring [ex]
- Web crawler/scraper [ex] [ex]
- Web server [erl] [erl] [erl]
- Web server interface/Web application middleware [ex] [ex] [erl]
- Web server, HTTP APIs [erl]
- WebDriver client [ex]
- WebSocket client [ex] [erl]
- Word inflector [ex]
- Word stemming, English (Porter2) [ex]
- Worker process pooling [erl] [erl] [erl] [erl]
- Worker process pooling and job queue [ex]
- X.509 certificates and Certificate Signing Requests (CSRs) [ex]
- XLSX (Excel) file reader [ex]
- XLSX files [ex] [ex]
- XML builder [ex]
- XML decode [ex]
- XML encode/decode [ex] [erl] [erl]
- XML query [ex]
- XML-RPC encode/decode [ex]
- XMPP client [ex] [erl]
- XMPP messaging platform [ex]
- XOR filters [ex]
- XQuery [erl]
- YAML encoder [ex]
- YAML parser [erl] [erl]
- ZeroMQ [erl]
- Zip file streaming [ex]
- Zipper data structure traversal [erl]
Plug
- Server-Sent Events (SSE) [ex]
- Block/throttle abusive requests [ex]
- Access logs [ex]
- API Authentication framework [ex]
- API toolkit [ex]
- API versioning [ex] [ex]
- Authentication framework [ex]
- Authentication, OAuth 2.0 (multi-provider), works with Guardian [ex]
- Authentication, OAuth 2.0/1.0 (multi-provider), works with Pow [ex]
- Authentication, SAML 2.0 SSO (Single-Sign-On) [ex]
- Authentication, token-based (JWT/other), Plug/non-Plug [ex]
- Authorization [ex] [ex]
- AWS Signature V4 [ex]
- Canonical hosts [ex]
- CORS headers [ex] [ex]
- EEx templates safe content embedding [ex]
- ETags [ex]
- Health checks [ex]
- Heartbeat requests [ex]
- HTTP headers manipulation [erl]
- HTTP/JSON error payloads [ex]
- IP geolocation [ex]
- IP geolocation, MaxMind GeoIP2 [ex] [erl]
- IPFS libp2p swarms [erl]
- JSON API key conversion [ex]
- Kubernetes health checks [ex]
- Logging (plain text/JSON) [ex]
- Mock HTTP server [ex]
- Monitoring system (Prometheus) [ex]
- OpenAPI/Swagger specification [ex]
- OpenAPI/Swagger/Blueprint documentation generator [ex]
- Pagination HTML output [ex]
- Rails session store support [ex]
- REST [ex]
- Secure HTTP headers [ex]
- Statsd metrics [ex] [erl]
- Test mock HTTP server [ex]
Phoenix
- Admin interface [ex]
- Admin interface for Ecto schemas [ex]
- Admin interface scaffolds [ex]
- API documentation generator [ex]
- API specification (Swagger/OpenAPI) [ex]
- Asset pipeline (Webpack) [ex]
- Authentication generator [ex]
- Authentication, OpenID Connect client [ex]
- Authorization [ex] [ex]
- CRUD for Phoenix contexts and Absinthe [ex]
- Dashboard, performance monitoring and debugging [ex]
- Ecto integration [ex]
- Email [ex]
- HTML helpers [ex]
- HTML sanitizer [ex]
- Integration/browser testing [ex]
- Live-reload [ex]
- LiveView component library [ex]
- Meta tags [ex]
- Metrics/Instrumentation (Prometheus) [ex]
- Presence tracking [ex]
- Query params scopes/filtering [ex]
- React.js component helpers (Harmonium) [ex]
- React.js components [ex]
- Reactive UI [ex] [ex]
- Redis PubSub adapter [ex]
- Search, sort and paginate [ex]
- Security static analysis [ex]
- Slim templates [ex]
- Specs/Behavior Driven Development (BDD) [ex]
- SSL client authentication [ex]
- UI Components [ex]
Absinthe
- Absinthe GraphQL framework [ex]
- Authorization middleware [ex]
- Batch data loading [ex]
- Plug integration [ex]
- Schema testing [ex]
Ecto
- Background jobs, PostgreSQL [ex] [ex]
- Base62-encoded UUIDs [ex]
- Cassandra DB adapter [ex]
- Composable query builder [ex]
- Database migrations linter [ex], [ex]
- Database multitenancy (PostgreSQL) [ex]
- Encrypted password (Comeonin) [ex]
- Encryption [ex]
- Enums [ex]
- Explain function [ex]
- Filtering [ex]
- Finite State Machine (FSM) [ex]
- Helper functions [ex]
- Instrumenter for Prometheus [ex]
- LDAP adapter [ex]
- Mac address/network extensions (PostgreSQL) [ex]
- Markdown query results [ex]
- Mnesia adapter [ex]
- MSSQL/TDS adapter [ex]
- Pagination (cursor-based) [ex] [ex]
- Parameter validation/casting [ex]
- PostgreSQL ISN types [ex]
- PostgreSQL performance insights [ex]
- RDF graph data mapper [ex]
- Schema structs [ex]
- Search, sort, and pagination [ex]
- ShortUUID [ex]
- Slugs [ex]
- SQLite3 adapter [ex]
- Tenancy [ex]
- Test fixtures/factories [ex]
- Timex support [ex]
- Transform request params to query expressions [ex]
- Tree structures, ltree (Postgres) [ex]
- Versioning [ex]
Nerves
- Character matrix LCD displays [ex]
- Cloud provider (Vultr) Nerves adapter [ex]
- E-ink displays [ex]
- Embedded firmware updates [ex]
- Embedded software framework [ex]
- Firmware framework [ex]
- WPA client [ex]
Tooling
- BEAM process visualizer, command line [erl]
- BEAM process visualizer, GUI [ex]
- Code formatter [ex] [erl] [erl] [erl] [erl]
- Compile dependency visualization [ex]
- Compile to executable binary [ex]
- Dialyzer Mix tasks [ex]
- Docker Alpine image, Elixir/Phoenix [ex]
- Documentation coverage reports [ex] [ex]
- Documentation generation [ex]
- EEx template formatter [ex]
- Eex to Heex converter [ex]
- Elixir package security advisories [ex]
- Emacs Erlang IDE [erl]
- Emacs mode for Elixir [ex]
- Erlang shell, colorized [erl]
- Erlang system graphs [erl]
- Flame graph profiler [ex]
- Heroku buildpack for Elixir [ex] [ex]
- IntelliJ plugin [ex]
- Language server [ex] [erl] [erl]
- Nova syntax highlighting [ex]
- Oh-my-zsh plugin [ex]
- Project templates [ex]
- Refactoring linter [ex]
- Refactoring tools (Emacs) [erl]
- REPL terminal colors [ex]
- Runtime version manager [ex] [erl]
- Security hardening guide [erl]
- Static analysis suite, mix task [ex]
- Static analysis, additional Credo checks [ex]
- Static analysis, security scan [erl]
- Static code analysis/Linter [ex] [erl] [erl]
- TextMate/Sublime Text bundle for Elixir [ex]
- Tracing/profiling GUI, Erlang/Elixir [erl]
- Vim full language integration [ex]
- Vim syntax highlighting [ex]
- Visual Studio Code (BEAM disassemberly/bytecode viewer) [ex] [erl]
- Visual Studio Code (EEx snippets) [ex]
- Visual Studio Code (EEx template formatter) [ex]
- Visual Studio Code (Erlang formatter) [erl]
- Visual Studio Code (Hex package info) [ex] [erl]
- Visual Studio Code (Hex package version intellisense) [ex]
- Visual Studio Code (Hex.pm version intellisense) [ex]
- Visual Studio Code (Phoenix HEEX/PETAL snippets) [ex]
- Visual Studio Code (Language server support) [ex] [erl] [erl] [erl]
- Visual Studio Code (Linter with Credo) [ex]
- Visual Studio Code (Test runner, jump to test) [ex]
Database (non-Ecto)
- RethinkDB client [ex] [erl]
- Neo4j driver [ex] [ex]
- MariaDB/MySQL driver [ex]
- LevelDB client [ex] [erl]
- Kafka data processing [ex]
- Kafka microservices toolkit [ex]
- Kafka client [ex] [erl] [erl]
- InfluxDB driver [ex] [erl]
- Apache Druid database client [ex]
- Cassandra database driver [ex] [erl]
- Cayley database driver [ex]
- Clickhouse OLAP database client [ex]
- Event store, PostgreSQL [ex]
- EventStore database client [ex]
- Mnesia database client [ex] [ex]
- MongoDB database driver [ex] [ex] [ex]
- MSSQL/TDS database driver [ex]
- MySQL/MariaDB database driver [ex] [erl]
- Oracle database driver [erl]
- Riak distributed database client [ex] [erl]
- SQLite3 database adapter [ex] [erl]
Cowboy
- Authentication, OpenID Connect [erl]
- Routing improvements [erl]
- Server-sent events (SSE) handler [erl]
- Swagger/OpenAPI integration [erl]
- Telemetry [erl]
Erlang Specific
- 2-way maps [erl]
- Abstract Term database client [erl]
- Build system [erl] [erl] [erl]
- Cache compiler [erl]
- Dead code remover [erl]
- Documentation in the shell [erl]
- Embedded BEAM for ESP32/STM32 microcontrollers [ex]
- Erlang distribution, zero dependencies (for RabbitMQ) [erl]
- Erlang port driver, C/C++ [erl]
- Erlang Term Storage (ETS) table sharding [erl]
- Erlang terms memory size instrumentation [erl]
- Extended standard libraries [erl]
- File system listener [erl]
- Instrumentation/metrics [ex] [erl]
- Kill zombie OS processes [ex]
- Mix task helpers [erl]
- Model checker/Formal proofs of correctness [erl] [erl]
- Modules string eval [erl]
- Node failure detection [erl]
- Node monitoring [erl]
- OpenEmbedded/Yocto build system [erl]
- OTP release compatibility detecter [erl]
- Performance monitoring GUI [erl]
- Ports connection with Python/Ruby [ex] [erl]
- Python Erlang node [erl]
- Pre-processor [erl]
- Process buffers [erl]
- Process info [erl]
- Release assembler [erl]
- Release management [erl]
- Release management utilities [erl]
- Testing utilities [erl]
- Tracing and debugging (GUI) [erl]
- Type system [erl] [erl]
- Type system, gradual [erl]
- Unicode backward compatibility [erl]
- VM metrics [erl]
- Xref runner [erl]
Rebar
- .dia file compiler [erl]
- abnfc compiler [erl]
- ASN.1 module compiler [erl]
- Auto compile/reload on file change [erl]
- Elixir dependency build with Mix [erl]
- Erlang IDL file compiler [erl]
- Erlang QuickCheck properties support [erl]
- ExUnit tests [erl]
- Hex.pm plugin [ex]
- Live [erl]
- Packrat parser-generator for PEG (Parsing Expression Grammar) [erl]
- Port compiler [erl]
- Protobuf compiler [erl]
- Protobuffs [erl]
- Release upgrades [erl]
- Releases [erl]
- yang compiler [erl]
Languages Integration
- BEAM implementation, Rust [erl]
- C# client for Phoenix Channels [ex]
- Clojure integration [erl]
- Clojure JInterface integration [erl]
- CMake integration with Mix [ex]
- Crystal client for Phoenix Channels [ex]
- Elixir to Javascript transpiler [ex]
- Elm to Elixir compiler [ex]
- Erlang cluster integration, Go [erl]
- Erlang struct and error message convert to Elixir [ex]
- Erlang Term Storage (ETS) encode/decode, Python/JavaScript [erl]
- Erlang to Elixir transpiler [erl]
- ERTS emulation in PureScript [erl]
- Gleam integration with Elixir [ex]
- Haskell to BEAM compiler [ex]
- Javascript AST parser [ex]
- Javascript Erlang term encode/decode [ex]
- NIF (C++) [erl]
- NIF (Haskell) [erl]
- NIF (Nim) [erl]
- NIF (Rust) [ex] [erl]
- NIF (SQLite) [ex]
- NIF (WASM) [ex]
- NIF (Zig) [ex]
- Node.js function calls [ex]
- PHP interpreter [erl]
- Port Wrapper forwarding [erl]
- Ruby Marshal format [ex]
- Rust communication with Erlang nodes [erl]
Format
- Alphabetical
- Flat list enables quick reference
- Short category name with URL to lib
- Category names should become more internally consistent over time
- Link to Hex package when possible, otherwise to source code page
- Tag Elixir options with [ex]
- Tag Erlang options with [erl]
- Tag Gleam options with [glm]
- Put entries in subjective order of curated preference
- Keep entries by language together, first is [ex], then [erl], then [glm].
Preference Rules
All else being equal:
- Prefer stdlib to a third party package
- Prefer the more mature library
- Prefer the library with less dependencies
- Prefer the better tested version
- Prefer the faster library
- Prefer the Erlang version to a thin Elixir wrapper (less dependencies)
Contributing
Contributions are welcome!
- Please only request an addition if you have experience using the library in a project
- If you think there is a better library for one of the entries, simply create a PR and move the current choice to runner-up. If there was already a runner-up, it falls off the list.
- If you think a category should be added, renamed, split out into multiple, or merged with another category, simply submit a PR with the changes.
Note about web API Clients
I do not list web API clients here. There are too many of them, it's too difficult to keep up with their changes, many of them are simple to implement yourself as HTTP calls to the REST API, and you can simply search on Hex to find ones relevant to the API in question.