Verifies Ethereum NFT ownership with an IC canister, covering mainnet and the Sepolia and Goerli testnets
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.
Actual screenshot captured by the server browser.
All pages & views 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Frontend is TypeScript + Vite + React + Tailwind, and the backend canister uses Motoko
Ethereum integration is based on Rust and ethers-core, with wallet interaction using MetaMask
Provides npm run setup to complete dependency installation, canister deployment, and type binding generation in one step
The README gives a complete path from claiming test tokens with MetaMask and minting an NFT to verifying ownership
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.
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
Node.js >= 16, dfx >= 0.14, and the latest version of Rust must be installed in advance
- 2
Run rustup target add wasm32-unknown-unknown to support Rust canister development
- 3
Run npx degit dfinity/ic-eth-starter in an empty directory to obtain the project
- 4
Run dfx start --clean --background, npm run setup, and npm start in sequence
- 5
To deploy to mainnet, use dfx deploy --network ic; verifying NFTs requires a MetaMask wallet and testnet NFTs
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis 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
https://github.com/dfinity/icp-eth-starter/blob/main/LICENSEhttps://github.com/dfinity/icp-eth-starter/blob/main/README.mdThis repository is in early beta testing
Original README
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.
Explore similar templates
Compare previews and descriptions within the same stack and category.

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 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
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
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
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
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
