Elixir Open Source Projects

Reading production code is the fastest way to graduate from exercises to engineering. Each project below is actively maintained, and the last column names the specific thing worth reading it for. Star counts are approximate, from the GitHub API.

The Core Stack

ProjectWhat it isStarsWhat to study in the code
elixir-lang/elixirThe language and standard library~26.6kHow Enum/Stream build on protocols; the compiler's AST passes in lib/elixir
erlang/otpErlang/OTP — the runtime and behaviours~12.3kgen_server.erl source — the behaviour you have used since lesson 18
phoenixframework/phoenixThe web framework~23.2kPlug pipeline composition in Phoenix.Router; contexts as conventions
phoenix_live_viewServer-rendered rich UI~6.8kThe diff engine: changed assigns become minimal DOM patches
elixir-ecto/ectoData toolkit (schemas, changesets, queries)~6.5kChangesets as validation pipelines; query compilation to SQL
elixir-plug/plugThe web abstraction beneath Phoenix~3.0kPlug.Builder — pipelines compiled into one function
elixir-lang/ex_docDocumentation generator~1.6kParsing @doc attributes and running doctests

Infrastructure Libraries

ProjectWhat it isStarsWhat to study in the code
oban-bg/obanJob processing on Postgres/SQLite/MySQL~4.0kRetries and backoff encoded as job state transitions
dashbitco/broadwayData ingestion pipelines (GenStage-based)~3.5kBack-pressure via max_demand; batcher supervision
elixir-lang/gen_stageProducer/consumer with demand~1.6kThe demand protocol — Broadway's foundation
bitwalker/libclusterAutomatic cluster formation~2.2kEach discovery strategy as a supervised process
quantum-elixir/quantum-coreCron-like job scheduler~2.4kRunning a job on exactly one node via global locks
opentelemetry-erlangDistributed tracing SDK~0.4kTrace propagation across processes and nodes
elixir-ecto/postgrexPostgreSQL driver~1.2kBinary protocol parsing with bitstream pattern matching
swoosh/swooshEmail delivery abstraction~1.5kAdapter pattern via behaviours; testing adapters

Whole Applications

ProjectWhat it isStarsWhat to study in the code
plausible/analyticsPrivacy-first web analytics, self-hostable~29kA full Phoenix product: contexts, ClickHouse usage, deployment
livebook-dev/livebookInteractive notebooks for Elixir~5.9kLiveView at scale; Mix.install runtime; Kino widgets
supabase/realtimeWebSockets: broadcast, presence, Postgres changes~7.6kMulti-node fan-out at scale; connection supervision
firezone/firezoneRemote access built on WireGuard~9.1kElixir + Rust (NIF/interop) in one product
blockscout/blockscoutBlockchain explorer for EVM networks~4.7kHeavy Ecto usage; indexers as supervised processes

Numerical and Ecosystem Edges

ProjectWhat it isStarsWhat to study in the code
elixir-nx/nxTensors and defn numerical functions~2.9kHow defn code is compiled to multiple backends
elixir-nx/explorerDataFrames on Rust's Polars~1.5kRustler NIF integration over a Rust core
elixir-nx/bumblebeePretrained Hugging Face models in Elixir~1.7kNx.Serving — batched, supervised inference
ash-project/ashDeclarative application framework~2.5kHeavy metaprogramming done well — resources compile to code
nerves-project/nervesFirmware packaging for embedded devices~2.5kOTP applications booted as firmware; toolchains
membraneframework/membrane_coreMultimedia pipeline framework~1.5kPipeline elements as supervised processes with demand
absinthe-graphql/absintheGraphQL toolkit~4.4kMacros building schemas at compile time
elixir-wallaby/wallabyBrowser testing (concurrent)~1.8kOne WebDriver session per test process

Developer Tooling

ProjectWhat it isStarsWhat to study
rrrene/credoStatic analysis with a consistency focus~5.2kWriting code-analysis checks over the AST
elixir-lsp/elixir-lsLanguage Server for editors~1.8kBridging compiler diagnostics into LSP
hexpm/hexThe package manager~1.1kDependency resolution as a fun graph problem
h4cc/awesome-elixirCurated catalog of libraries~13kThe ecosystem map — find tools by category

How to Read Them

  1. Start at the behaviour. Find the use ... or @behaviour and read the callbacks first — they are the contract.
  2. Read the tests before the source. Tests are executable documentation of intent.
  3. Trace one request. Pick the entry function and follow the data; note every :telemetry event on the way.
  4. File an issue, not a rewrite. The point is to study decisions, not to judge them from scratch.