Lux Docs

Architecture

Elixir OTP umbrella application structure

Mix Umbrella

The backend is a Mix umbrella project with six OTP applications:

explorer/
├── apps/
│   ├── block_scout_web/    # Web API (Phoenix)
│   ├── explorer/           # Core data layer (Ecto)
│   ├── ethereum_jsonrpc/   # RPC client
│   ├── indexer/            # Data fetcher
│   ├── utils/              # Shared utilities
│   └── nft_media_handler/  # NFT media
├── config/                 # Configuration
├── docker/                 # Docker files
└── mix.exs                 # Root project

Dependencies

Key Elixir packages:

PackageVersionPurpose
phoenix1.7.xWeb framework
absinthe1.5.xGraphQL
ecto3.xDatabase ORM
postgrexPostgreSQL driver
httpoison2.0HTTP client
jasonJSON codec
prometheusMetrics

Build Process

# Development
mix deps.get
mix compile
mix phx.server

# Production release
MIX_ENV=prod mix release blockscout

The production release creates an OTP release at /opt/release/blockscout/ that can run without Elixir/Erlang installed (ERTS is bundled).

On this page