How rumblefishdev/soroban-block-explorer works
Soroban Block Explorer is a Stellar/Soroban explorer: users search or browse ledger entities in the React SPA, which fetches REST data and presents list, detail, and transaction views. The backend exposes entity APIs over ClickHouse-backed data; ingestion parses ledger data for persistence, while a separate enrichment path fills metadata side tables. The README establishes the product components, and sampled files confirm selected frontend, API, worker, and backfill behavior. Several backend links reflect the tree and README’s architecture; unsampled implementation details are not inferred as specific calls.
Main entry points: src/main.rs Ledger indexer · src/main.rs REST API · compute-stack.ts AWS runtime · routes.ts Routes
Components 22
Explorer UI
- Explorer SPA
web/src/app.tsx - Routes
web/src/router/routes.ts - Search results
web/src/search/useSearchResults.ts - Entity pages
web/src/pages/TransactionDetailPage.tsx - API hooks
web/src/api/client.ts - Shared UI
libs/ui/src/index.ts
API and storage
- REST API
crates/api/src/main.rs - Search API
crates/api/src/search/handlers.rs - Entity APIs
crates/api/src/transactions/handlers.rs - Entity queries
crates/api/src/transactions/queries.rs - ClickHouse
Ingestion and enrichment
- Ledger indexer
crates/indexer/src/main.rs - Backfill runner
crates/backfill-runner/src/main.rs - Enrichment publisher
crates/indexer/src/handler/enrichment_publish.rs - Enrichment worker
crates/enrichment-worker/src/main.rs
Shared data logic
- XDR parser
crates/xdr-parser/src/lib.rs - ClickHouse persistence
crates/db-clickhouse/src/persist.rs - Enrichment logic
crates/enrichment-shared/src/enrich_and_persist/mod.rs
Other components
- Explorer user
- SQS
- Metadata services
- AWS runtime
infra/src/lib/stacks/compute-stack.ts
Connections 26
- Explorer user → Explorer SPA: browses
- Explorer SPA → Routes: matches routes
- Routes → Search results: opens search
- Routes → Entity pages: opens pages
- Search results → API hooks: queries results
- Entity pages → API hooks: requests data
- Entity pages → Shared UI: renders with
- API hooks → REST API: HTTP requests
- REST API → Search API: dispatches search
- REST API → Entity APIs: dispatches entities
- Entity APIs → Entity queries: queries
- Entity queries → ClickHouse: reads
- Search API → ClickHouse: searches
- Ledger indexer → XDR parser: parses ledgers
- Ledger indexer → ClickHouse persistence: persists records
- ClickHouse persistence → ClickHouse: writes
- Backfill runner → ClickHouse persistence: backfills through
- Ledger indexer → Enrichment publisher: publishes work
- Enrichment publisher → SQS: sends messages
- SQS → Enrichment worker: delivers records
- Enrichment worker → Enrichment logic: dispatches enrichment
- Enrichment logic → Metadata services: fetches metadata
- Enrichment logic → ClickHouse: writes side tables
- AWS runtime → REST API: hosts
- AWS runtime → Ledger indexer: hosts
- AWS runtime → Enrichment worker: hosts