Eld Blockchain Explorer is the public block explorer UI for the Eld decentralized ephemeral storage protocol, built with Vite and React.
Live site: https://explorer.eld.network
This repository is the explorer frontend only — not the Eld protocol, consensus node, indexer, SDKs, or a wallet.
- It reads public RPC and indexer HTTP APIs; it does not custody keys or submit transactions.
- Displayed chain data depends on those backends and may be incomplete, delayed, or wrong.
- The UI uses capacity provider as the product term for that role.
- For protocol docs and the marketing site, see Documentation and eld.network.
Browser (React SPA)
└─ App → ExplorerAppShell → AppRoutes → pages/
├─ api/ shared RPC + indexer HTTP (timeout, abort)
├─ hooks/ data hooks built on api/
├─ components/ shared UI (lists, shell, footer, …)
├─ utils/ search resolver, formatting, helpers
└─ config/ RPC_URL, API_URL, feature flags
│
├─ VITE_RPC_URL → Tendermint / node RPC
└─ VITE_API_URL → explorer / indexer API
| Layer | Role |
|---|---|
src/App.js |
BrowserRouter entry |
src/components/ExplorerAppShell.js |
chrome (header, theme, footer) |
src/AppRoutes.js |
client-side routes (+ error boundary, 404) |
src/pages/ |
route screens (home, block, tx, account, validators, pinboard, …) |
src/api/ |
typed HTTP helpers for RPC and indexer |
src/hooks/ |
data hooks (retry + AbortController) using src/api/ |
src/config/ |
env-backed endpoints and optional validator admin status maps |
Static output is a Vite build/ folder; deploy that behind any static host / CDN.
- Node.js >= 20
npm install
cp .env.example .env.development
cp .env.example .env.production
npm startDev server: http://localhost:3000. Vite loads .env.development for npm start / npm run dev.
Calling production RPC/API hosts from localhost may fail CORS; use local backends, Vite’s /rpc and /api proxies, or an allowlisted origin.
| Variable | Required | Description |
|---|---|---|
VITE_RPC_URL |
yes | Tendermint / node RPC base URL (default http://localhost:26657) |
VITE_API_URL |
yes | Explorer / indexer API base URL (default http://localhost:9001) |
VITE_ENABLE_VALIDATOR_ADMIN_STATUS |
no | true to load optional per-validator admin status URLs (dev-oriented; default off) |
When the flag is on, URL maps come from committed JSON:
src/config/validator-admin-status-urls.development.json— localhost examples for local runssrc/config/validator-admin-status-urls.production.json— empty by default; add production URLs here if needed
| Script | Description |
|---|---|
npm start / npm run dev |
Vite dev server |
npm run build |
Production build → build/ |
npm run preview |
Serve the production build locally |
npm test |
Vitest (single run) |
npm run test:watch |
Vitest watch mode |
npm run lint |
ESLint |
npm run format |
Prettier write |
npm run format:check |
Prettier check |
npm run ci |
format:check → lint → tests → npm audit --omit=dev --audit-level=high → build |
npm run ciMerges to main (and work on feature branches) do not deploy the live site. Production updates are gated by version tags and GitHub Releases:
-
Land the changes on
mainand wait for CI to pass. -
Align
package.json"version"with the release (e.g.1.2.3), then create and push a semver tag from that commit:git checkout main git pull git tag v1.2.3 git push origin v1.2.3
-
Pushing the tag runs the Draft release workflow, which opens a draft GitHub Release (with generated notes). Nothing is deployed yet.
-
Review the draft under Releases, edit notes if needed, then Publish release.
-
Publishing triggers the Deploy production workflow, which builds the tagged commit and updates explorer.eld.network.
Only tags matching v*.*.* (for example v1.2.3) participate in this flow. Tags must point at a commit that is on main.
MIT — see LICENSE.
Font files in src/fonts/ are Ioskeley Mono, licensed under the SIL Open Font License 1.1 — see src/fonts/LICENSE.
