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, 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.
pnpm install
pnpm devUseful commands:
pnpm typecheck
pnpm build
pnpm generateThe 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.orgNUXT_PUBLIC_MAINNET_ENS_RPC can be set when you want a dedicated Ethereum mainnet RPC for .eth ENS resolution.
packages/dappis the Nuxt app.packages/contract-readeris the publishable library of shared contract UI components (@evmnow/contract-readeron npm).
Install in another Nuxt project:
pnpm add @evmnow/contract-readerThen 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.
Releases are managed with changesets.
- Add a changeset for your changes:
Pick the affected packages and a bump type. Commit the resulting
pnpm changeset
.changeset/*.mdfile with your PR. - On merge to
main, the Release workflow opens (or updates) a "Version Packages" PR that bumps versions and writes CHANGELOGs. - Merging that PR triggers the workflow again, which:
- publishes
@evmnow/contract-readerto npm; - creates a
@evmnow/dapp@x.y.zGitHub release for the dapp (private, not published).
- publishes
MIT © 1001.digital