Umbrella Project Organization

How the StarTower project is organized

StarTower is an Elixir umbrella projectarrow-up-right. Each directory under apps/ is a separate Mixarrow-up-right project and OTP applicationarrow-up-right, but the projects can use each other as a dependency in their mix.exs.

Each OTP application has a restricted domain.

circle-info

Table is horizontally scrollable.

Directory
OTP Application
Namespace
Purpose

apps/ethereum_jsonrpc

:ethereum_jsonrpc

StarTowerJSONRPC

StarTower JSONRPC client. It is allowed to know Explorer's param format, but it cannot directly depend on :explorer

apps/explorer

:explorer

Explorer

Storage for the indexed chain. Can read and write to the backing storage. MUST be able to boot in a read-only mode when run independently from :indexer, so cannot depend on :indexer as that would start :indexer indexing.

apps/block_scout_web

:block_scout_web

BlockScoutWeb

Phoenix interface to :explorer. The minimum interface to allow web access should go in :savw_scan_web. Any business rules or interface not tied directly to Phoenix or Plug should go in :explorer. MUST be able to boot in a read-only mode when run independently from :indexer, so cannot depend on :indexer as that would start :indexer indexing.

apps/indexer

:indexer

Indexer

Uses :startower_jsonrpc to index chain and batch import data into :explorer. Any process, Task, or GenServer that automatically reads from the chain and writes to :explorer should be in :indexer. This restricts automatic writes to :indexer and read-only mode can be achieved by not running :inde

Last updated