Stellar Explain is an explainability-first backend for the Stellar blockchain.
It transforms raw Stellar Horizon data into clear, human-readable explanations, making transactions easier to understand for developers, analysts, and users — without digging through JSON responses.
This project is designed to grow incrementally, with a strong focus on clarity, correctness, and contributor experience.
Most blockchain explorers answer:
"What happened?"
Stellar Explain answers:
"What does this mean?"
It focuses on:
- Plain-English explanations
- Structured, machine-readable outputs
- Explainability over raw data exposure
The Rust backend is deployed and publicly accessible — no local setup required to start contributing to the frontend or CLI:
| Endpoint | URL |
|---|---|
| Health check | GET https://stellar-explain-core.onrender.com/health |
| Explain transaction | GET https://stellar-explain-core.onrender.com/tx/:hash |
| Explain account | GET https://stellar-explain-core.onrender.com/account/:address |
Quick test:
curl https://stellar-explain-core.onrender.com/health
# → {"status":"ok","horizon_reachable":true,"version":"..."}
curl https://stellar-explain-core.onrender.com/tx/b9d0b2292c4e09e8eb22d036171491e87b8d2086bf8b265874c8d182cb9c9020The backend runs on Render's free tier and is kept alive with a GitHub Actions keep-alive cron (every 5 min).
Query the Stellar Explain backend directly from your terminal with the @stellar-explain/cli package.
npm install -g @stellar-explain/cliOr use it on the fly with npx:
npx @stellar-explain/cli tx <hash># Explain a transaction
stellar-explain tx b9d0b2292c4e09e8eb22d036171491e87b8d2086bf8b265874c8d182cb9c9020
# Explain an account
stellar-explain account GAAZI4TCR3TY5OJHCTJC2A4QSY6CJWJH5IAJTGKIN2ER7LBNVKOCCWN7
# Check backend health
stellar-explain healthSee packages/cli/README.md for full documentation.
Stellar Explain is a monorepo with four packages:
packages/
├── core/ # Rust/Axum backend — the source of truth
├── ui/ # Next.js 15 frontend — proxies all API calls server-side
├── cli/ # Node.js CLI — query the backend from your terminal
└── analytics/ # TypeScript analytics client — powers anonymous usage metrics
| Layer | Tech | Role |
|---|---|---|
| Backend | Rust + Axum | Fetches from Stellar Horizon, produces human-readable JSON |
| Frontend | Next.js 15 | Proxy routes keep the backend URL server-side only |
| CLI | Node.js | stellar-explain tx <hash> from your terminal |
| Analytics | TypeScript | Validates, queues, and delivers anonymous events to the backend |
- Backend is the primary product
- Frontend consumes the backend API via server-side proxy routes
- Business logic lives outside HTTP handlers
- Explanation logic is deterministic and testable
| Phase | Feature | Status |
|---|---|---|
| 1 | Payment transaction explainability (GET /tx/:hash) |
✅ Done |
| 1 | Account explainability (GET /account/:address) |
✅ Done |
| 2 | Multi-operation transactions | 🚧 Planned |
| 2 | Improved error explanations | 🚧 Planned |
| 3 | Trustlines, account creation, account merge, offers | 🔲 Future |
| 4 | Rich frontend experience & educational UI | 🔲 Future |
We welcome contributions of all kinds:
- Backend features (Rust)
- Frontend UI (Next.js)
- CLI improvements
- Tests and documentation
Before contributing:
- Read
DEVELOPMENT.md— setup guide, both quick (Render) and local (Rust) - Read
CONTRIBUTING.mdfor workflow guidelines - Check existing issues and milestones
- Work on issues in dependency order when specified
All backend issues include tests and clear acceptance criteria.
Join the Telegram group to ask questions or coordinate with maintainers:
👉 https://t.me/+n10W2fqjxBhmNDM0
Stellar Explain collects anonymous usage analytics. No PII is collected, and session IDs are ephemeral.
The @stellar-explain/analytics package is the TypeScript client that
validates, queues, and delivers these events to the backend. See
packages/analytics/README.md for its API,
configuration, and development guide.
- Page views, button clicks, form submissions, API calls
- Error occurrences (type and count only)
- Login/logout, search, purchase, refund
- IP addresses, email addresses, or names
- Cookies or cross-site behavior
Opt-out via the DNT header or a CLI --no-analytics flag is not implemented yet.
See PRIVACY.md for the full privacy policy.
MIT License.
You're free to use, modify, and redistribute this project.
Stellar Explain is part of the StellarCommons open-source initiative.
We value:
- clarity over cleverness
- small, meaningful contributions
- respectful collaboration