~/arifin
GitHub ↗
~/arifin · Indonesia
WorkWritingAbout
GitHub ↗LinkedIn ↗Email
← work
2024·Solo build·oss

Dexplorer

LIVE ↗OSS ↗
backgroundSpinning up a Cosmos testnet meant either running a full block explorer locally or going without chain visibility. Neither was acceptable during active development.
goalBuild a disposable, zero-backend explorer that connects directly to any Cosmos RPC endpoint via WebSocket.
outcomeDexplorer — a frontend-only Cosmos explorer with a live demo, open-sourced and actively used by developers running testnets.
Cosmos SDKTypeScriptReactCosmJSOpen SourceWebSocketProtobuf

When I was working on Cosmos SDK chains, the local development loop was frustrating. Every time I spun up a testnet, I had no way to visually inspect what was happening on-chain — which validators were active, whether my governance transaction landed, what the block times looked like. The existing explorers either required a backend, were tied to specific chains, or needed a database. I needed something disposable: plug in an RPC endpoint, explore, done.

The entire application runs in the browser with no backend. It connects to any Cosmos RPC via WebSocket, subscribes to new blocks in real time, and renders validator sets, governance proposals, and transaction data using CosmJS and Protobuf. Built on React 18 + TypeScript + Vite. There's a bypass mode that lets you embed a specific RPC endpoint via environment variable, which means you can deploy a dedicated instance for a specific chain without showing the connection UI at all — useful for public-facing testnets.

The hard part was the protobuf layer. Cosmos SDK's RPC interface is protobuf-heavy, and CosmJS doesn't cover every module. For some governance and staking queries I had to write custom protobuf decodings from scratch. Getting type safety through the protobuf layer in TypeScript — with all the nested message types and optional fields — took longer than the actual UI work. The Any type in protobuf, which Cosmos uses extensively, was the most stubborn to decode correctly.

After shipping the live demo at dexplorer.arifintahu.com and open-sourcing it, people started using it in ways I didn't fully anticipate. Developers running custom testnets have it bookmarked. It gets referenced in Cosmos SDK project READMEs as the recommended lightweight explorer. It remains the project I'm most happy with in this portfolio because it solves a real problem with minimal complexity — no server to maintain, no database to manage, just a URL.

← all workwriting →
LIVE ↗OSS ↗
Cosmos SDKTypeScriptReactCosmJSOpen SourceWebSocketProtobuf
← all workwriting →