Quickstart
From zero to live stream in four moves
Move 1
Run backend and keep it alive.
Move 2
Run frontend and open the monitor app.
Move 3
Connect wallet and choose any target address.
Move 4
Watch feed, latency trend, and metrics update live.
Architecture
Browser to backend to Helius
Frontend streams from Rust backend only. Backend handles logsSubscribe and getTransaction enrichment. This keeps browser clean and secrets out of client code.
Realtime Pipeline
How events become useful signal
- Client opens monitor websocket for chosen address.
- Backend validates pubkey and starts per client stream loop.
- Backend sends bootstrap recent events so UI is not empty.
- Live logs trigger signature enrichment with retries.
- Backend pushes transaction envelopes and rolling metrics.
Payload Contracts
What the socket sends
type: NEW_TRANSACTION fields: signature, status, timestamp, computeUnitsConsumed, priorityFeeMicrolamports, confirmationLatencyMs, slot type: METRICS_UPDATE fields: successRatePct, avgConfirmationMs, currentSlotLag, txPerMinute
Operations
Everyday local checklist
Health
curl 127.0.0.1:3000/health
Frontend
cd frontend && yarn lint
Backend
cd backend && cargo check
Debug Playbook
When things go weird
Connecting forever: backend is down or target address is invalid.
Duplicate feed rows: check dedupe behavior in socket pipeline.
No admin metrics: verify backend CORS and endpoint availability.
Funny latency values: wait for fresh live samples after bootstrap.