ViteReactStarter

icp-eth-starter — Vite Starter Template

By dfinity

A starter project for verifying Ethereum NFT ownership on the Internet Computer, with a Vite + React frontend and Motoko and Rust canisters on the backend, supporting mainnet and the Sepolia and Goerli testnets.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-02View source

What stands out

A quick read of the recorded project description.

01

Verifies Ethereum NFT ownership with an IC canister, covering mainnet and the Sepolia and Goerli testnets

02

Frontend is TypeScript + Vite + React + Tailwind, and the backend canister uses Motoko

03

Ethereum integration is based on Rust and ethers-core, with wallet interaction using MetaMask

04

Provides npm run setup to complete dependency installation, canister deployment, and type binding generation in one step

05

The README gives a complete path from claiming test tokens with MetaMask and minting an NFT to verifying ownership

06

The repository is in early beta and notes that an internal security review is underway

Template Details

This is a starter project aimed at experienced Web3 developers, with the goal of verifying Ethereum NFT ownership through a canister on the Internet Computer (IC). The project supports Ethereum mainnet as well as the Sepolia and Goerli testnets, and the README provides a complete workflow for obtaining test NFTs on Sepolia and verifying ownership on the demo site's /verify page.

In terms of technical composition, the frontend uses TypeScript, Vite, React, Tailwind, and Prettier; the backend canister uses Motoko, with Mops managing Motoko packages and mo-dev providing hot reload; the Ethereum integration uses Rust and ethers-core, and wallet interaction relies on MetaMask. The repository includes dfx.json and npm scripts, and npm run setup can complete dependency installation, canister deployment, and type binding generation.

The project is in early beta, and the README explicitly states that an internal security review is underway and welcomes issue reports or feature requests. It is therefore better suited as a learning and experimentation starting point rather than for direct production use.

ViteReactStarter

Is it right for your project?

Use Cases

  • Learning how to read and verify Ethereum on-chain data on the Internet Computer
  • Building IC application prototypes that require Ethereum NFT holder identity verification
  • Practicing cross-chain interaction flows between IC and Ethereum on the Sepolia or Goerli testnet
  • Using it as a reference structure for mixed Motoko canister and Rust canister projects

Suitable For

  • Developers with Web3 experience who are familiar with Ethereum and wallet operations
  • Teams or individuals who need an example of IC and Ethereum integration
  • Developers who want to study Motoko, Rust canisters, and the frontend type binding workflow

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Node.js >= 16, dfx >= 0.14, and the latest version of Rust must be installed in advance

  2. 2

    Run rustup target add wasm32-unknown-unknown to support Rust canister development

  3. 3

    Run npx degit dfinity/ic-eth-starter in an empty directory to obtain the project

  4. 4

    Run dfx start --clean --background, npm run setup, and npm start in sequence

  5. 5

    To deploy to mainnet, use dfx deploy --network ic; verifying NFTs requires a MetaMask wallet and testnet NFTs

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version of the public repository under the Apache-2.0 license; the free scope is the code of that version and does not mean that external services or third-party materials are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution are permitted; the Apache-2.0 license must be included when distributing.
  • Modified files must be prominently marked as changed, and relevant copyright, patent, trademark, and attribution notices must be retained.
  • If the original project includes a NOTICE file, applicable attribution notices in it must be retained when distributing derivative works.
  • The license includes an applicable contributor patent grant; initiating the patent litigation described in the license terminates that patent grant, and no trademark rights are granted.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Obtaining test tokens on the Sepolia testnet requires registering an Alchemy account, which is an external service account requirement, not a code license restriction.
  • Verifying NFT ownership requires installing the MetaMask wallet and creating an account, which is an external tool dependency.
  • The project is in early beta and an internal security review is underway; the README does not state production readiness.
  • The repository is in early beta testing, so features and interfaces may change and it is not suitable for direct production use.
  • Demo images, fonts, icons, and other third-party materials must be checked against their respective licenses and cannot be judged solely by the code's Apache-2.0 license.
  • External services such as domains, hosting, databases, payments, or AI may incur separate charges.
View Original Text Basis

no-charge, royalty-free, irrevocable copyright license

Original License Text

Fund your wallet using the [Sepolia Faucet](https://sepoliafaucet.com/) (requires signing up for an [Alchemy](https://www.alchemy.com/) account)

Original README

Install [MetaMask](https://metamask.io/) and create a new wallet for testing purposes

Original README

this starter project is currently undergoing an internal security review

Original README

This repository is in early beta testing

Original README
https://github.com/dfinity/icp-eth-starter/blob/main/LICENSEhttps://github.com/dfinity/icp-eth-starter/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 92 / 100
Technologies
Vite · React
Website type
Starter
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-04-09
Screenshot last checked
2026-10-02

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Vite as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: 6ff02759e652504ef20a4d6c67dd0c2a25bd80934d8ceac84d3d6089221c6263

2026-10-02T22:06:23.887Z

Source file / repository
# ICP 🔗 Ethereum (Beta)

> #### Interact with the [Ethereum](https://ethereum.org/) blockchain from the [Internet Computer](https://internetcomputer.org/).

---

## [🌐  View Deployed Dapp](https://xm3ir-rqaaa-aaaap-abhqq-cai.icp0.io/)

Designed for experienced Web3 developers, this starter project uses an IC canister to verify the ownership of Ethereum NFTs, with support for both the [Sepolia](https://www.alchemy.com/overviews/sepolia-testnet) and [Goerli](https://goerli.net/) testnets in addition to the Ethereum mainnet.

This repository is in early beta testing; please feel free to [open an issue](https://github.com/dfinity/ic-eth-starter/issues) to report a bug or request a feature. Thanks!

**Note:** this starter project is currently undergoing an internal security review. This message will be removed once the review process is complete.

## 🎬 Create a New Project

Make sure that [Node.js](https://nodejs.org/en/) `>= 16`, [`dfx`](https://internetcomputer.org/docs/current/developer-docs/build/install-upgrade-remove) `>= 0.14`, and the latest version of [Rust](https://www.rust-lang.org/tools/install) are installed on your system.

Set up Rust canister development with the following command:

```sh
rustup target add wasm32-unknown-unknown
```

Run the following commands in a new, empty project directory:

```sh
npx degit dfinity/ic-eth-starter # Download this starter project
dfx start --clean --background # Run dfx in the background
npm run setup # Install packages, deploy canisters, and generate type bindings

npm start # Start the development server
```

When ready, run `dfx deploy --network ic` to deploy your application to the Internet Computer.

## 🔌 Prepare a Testnet Wallet

Here is one way to acquire tokens and NFTs on the [Sepolia](https://www.alchemy.com/overviews/sepolia-testnet) testnet:

- Install [MetaMask](https://metamask.io/) and create a new wallet for testing purposes
- Fund your wallet using the [Sepolia Faucet](https://sepoliafaucet.com/) (requires signing up for an [Alchemy](https://www.alchemy.com/) account)
- Navigate to MetaMask's [E2E Test Dapp](https://metamask.github.io/test-dapp/)
  - Connect your wallet
  - In your MetaMask extension, change the network from "Ethereum Mainnet" to "Sepolia" ([visual guide](https://support.metamask.io/hc/en-us/articles/13946422437147-How-to-view-testnets-in-MetaMask))
  - Scroll down to the "NFTs" section
  - Press "Deploy" and then "Mint" (may take a few seconds)
  - Press "Watch all NFTs" and in the MetaMask prompt, click the link with text "Test Dapp NFTs #1"
  - In the bottom-right of the page (under "TokenID"), press "#1" to view your newly minted NFT
  - Copy / paste the URL into the [ICP 🔗 Ethereum demo project](https://xm3ir-rqaaa-aaaap-abhqq-cai.icp0.io/verify) to verify that you are the owner of the NFT. 

## 🛠️ Technology Stack

**Front-end Webapp:**
- [TypeScript](https://www.typescriptlang.org/): JavaScript extended with syntax for types
- [Vite](https://vitejs.dev/): high-performance tooling for front-end web development
- [React](https://reactjs.org/): a component-based UI library
- [Tailwind](https://tailwindcss.com/): a highly expressive, utility-first CSS framework
- [Prettier](https://prettier.io/): code formatting for a wide range of supported languages

**Back-end Canister:**
- [Motoko](https://github.com/dfinity/motoko#readme): a safe and simple programming language for the Internet Computer
- [Mops](https://mops.one): an on-chain community package manager for Motoko
- [mo-dev](https://github.com/dfinity/motoko-dev-server#readme): a live reload development server for Motoko

**Ethereum Integration:**
- [Rust](https://www.rust-lang.org/): a secure, high-performance canister programming language
- [ethers-core](https://github.com/gakonst/ethers-rs): a popular Rust library for working with Ethereum data structures
- [MetaMask](https://metamask.io/): a wallet and browser extension for interacting with Ethereum dapps

## 📚 Documentation

- [Vite developer docs](https://vitejs.dev/guide/)
- [React quick start guide](https://react.dev/learn)
- [Tailwind reference](https://v2.tailwindcss.com/docs)
- [Internet Computer docs](https://internetcomputer.org/docs/current/developer-docs/ic-overview)
- [`dfx.json` reference schema](https://internetcomputer.org/docs/current/references/dfx-json-reference/)
- [Motoko developer docs](https://internetcomputer.org/docs/current/developer-docs/build/cdks/motoko-dfinity/motoko/)
- [Mops usage instructions](https://j4mwm-bqaaa-aaaam-qajbq-cai.ic0.app/#/docs/install)
- [Rust canister guide](https://internetcomputer.org/docs/current/developer-docs/backend/rust/)
- [MetaMask developer docs](https://docs.metamask.io/)

## 💡 Tips and Tricks

- Customize your project's code style by editing the `.prettierrc` file and then running `npm run format`.
- Reduce the latency of update calls by passing the `--emulator` flag to `dfx start`.
- Install a Motoko package by running `npx ic-mops add <package-name>`. Here is a [list of available packages](https://mops.one/).
- Split your frontend and backend console output by running `npm run frontend` and `npm run backend` in separate terminals.

---

Contributions are welcome! Please check out the [contributor guidelines](https://github.com/dfinity/ic-eth-starter/blob/main/.github/CONTRIBUTING.md) for more information.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.

react-starter-kit

react-starter-kit

A full-stack SaaS monorepo starter built on Vite and React, with Bun, TypeScript, tRPC, Drizzle ORM, Better Auth, Stripe, and Cloudflare Workers. It includes email OTP, passkey, Google OAuth, organizations, subscription billing, Drizzle migrations, seed scripts, and Terraform infrastructure.

Vite · SaaS

cove

cove

Cove is a minimal TanStack Start starter template maintained by mugnavo, integrating React, TanStack Router/Query, Tailwind CSS, shadcn/ui, Drizzle ORM with PostgreSQL, Better Auth, Vite Plus, and Nitro.

Vite · SaaS

vite-react-boilerplate

vite-react-boilerplate

A production-ready Vite + React starter template with TypeScript, Tailwind CSS, TanStack Router/Query/Table, Storybook, React Hook Form + Zod, Vitest and Playwright testing, plus Husky/Commitizen/Commitlint commit conventions.

Vite · Starter

react-vite-admin

react-vite-admin

A backend management starter built on Vite and React, integrating Recoil, React Query, TypeScript, and Axios, with Ant Design-style interface screenshots. Suitable as a starting point for management-side projects, licensed under MIT, with Chinese documentation and common scripts.

Vite · Admin dashboard

typescript-react_best_practices-vite_template

typescript-react_best_practices-vite_template

A Vite + React + TypeScript starter template by CodelyTV, preconfigured with Jest and React Testing Library unit tests, Cypress end-to-end tests, ESLint and Prettier using Codely's shared configuration, GitHub Actions workflows, a Makefile, and Sass.

Vite · Starter

cloudflare-starter-kit

cloudflare-starter-kit

A Cloudflare Workers project scaffolding template maintained by kriasoft, using Vite and TypeScript, with three built-in workspaces: api, app, and edge, and preconfigured local testing, multiple environments, and a GitHub Actions deployment workflow.

Vite · Starter