Skip to content

Repository files navigation

evm.now dApp

A streamlined, open-source version of the block explorer experience at evm.now — a simple UI for looking up verified EVM contracts, inspecting their metadata and source, and calling read/write functions directly from the browser. Chain ID and RPC are configurable per-user and stored locally, so the same build works against any EVM network.

This repo ships two packages:

  • @evmnow/dapp — the Nuxt app behind evm.now (published as versioned GitHub releases, not to npm).
  • @evmnow/contract-reader — the reusable pieces powering the dapp as a Nuxt layer: Vue components, composables, and utilities for rendering ABIs, decoding inputs/outputs, resolving ENS/GNS/WNS names, and wiring up read and write calls via viem and wagmi. Extend it from another Nuxt project to drop a contract UI into your own app.

We believe EVM contracts deserve a simple, open UI that lets users interact with them permissionlessly. This is the foundation — alongside the contract-metadata standard and SDK we're building to power better UX across the ecosystem.

Run Locally

pnpm install
pnpm dev

Useful commands:

pnpm typecheck
pnpm build
pnpm generate

Settings

The app has a Settings page for the reader RPC and chain ID. Both values are stored locally in your browser.

You can seed them with public Nuxt env vars:

NUXT_PUBLIC_DEFAULT_CHAIN_ID=1
NUXT_PUBLIC_DEFAULT_RPC=https://rpc.example.org

NUXT_PUBLIC_MAINNET_ENS_RPC can be set when you want a dedicated Ethereum mainnet RPC for .eth, .gwei, and .wei name resolution. The environment variable keeps its established name for compatibility.

RPC via URL

Links can pass an RPC endpoint with the dappspec query parameter ds-rpc-<chainId>:

https://evmnow.eth.link/?ds-rpc-1=https%3A%2F%2Frpc.example.org

The override takes priority over saved settings for the session and is never stored. When several ds-rpc-* parameters are present, the one matching the selected chain wins, falling back to the first. A ds-rpc-1 endpoint is also used for ENS, GNS, and WNS resolution.

Repo

  • packages/dapp is the Nuxt app.
  • packages/contract-reader is the publishable library of shared contract UI components (@evmnow/contract-reader on npm).

Using the library

Install in another Nuxt project:

pnpm add @evmnow/contract-reader

Then extend it in nuxt.config.ts:

export default defineNuxtConfig({
  extends: ['@evmnow/contract-reader'],
})

Components, types, utils, and composables are also importable directly — e.g. @evmnow/contract-reader/components/Function/Cards, @evmnow/contract-reader/utils/contract.

Releasing

Releases are managed with changesets.

  1. Add a changeset for your changes:
    pnpm changeset
    Pick the affected packages and a bump type. Commit the resulting .changeset/*.md file with your PR.
  2. On merge to main, the Release workflow opens (or updates) a "Version Packages" PR that bumps versions and writes CHANGELOGs.
  3. Merging that PR triggers the workflow again, which:
    • publishes @evmnow/contract-reader to npm;
    • creates a @evmnow/dapp@x.y.z GitHub release for the dapp (private, not published).

License

MIT © 1001.digital

About

Look up and interact with EVM smart contracts.

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages