A lightweight, developer-friendly full-stack starter kit for building DApps on Core. Preconfigured with Hardhat, Next.js, and RainbowKit, it offers a seamless developer experience from testing and deploying smart contracts to frontend connectivity.
Spin up your DApp with just one command:
npx create-core-dapp your-dapp-name
- ⚡ Next.js 15 –Fast, flexible frontend with server-side rendering.
- 🎛️ Wagmi + Viem - Modern React hooks and utilities for blockchain interaction.
- 🌈 RainbowKit – Pre-integrated with RainbowKit for hassle-free wallet login.
- ✅ Hardhat – preconfigured for Core Mainnet and Testnet environments
- 🔔 React Toastify – Built-in, minimal toast notifications for better UX
- 📦 Auto-synced ABIs – No manual copying—just compile and integrate it in frontend
- Node.js: Version 20.x or higher is recommended. You can check your version with:
Download from nodejs.org.
node --version
npx create-core-dapp@latest your-dapp-name
yarn create-core-dapp your-dapp-name
You can also clone the repository and run it locally:
# Clone the repository
git clone https://github.com/your-username/create-core-dapp.git
# Navigate to the project directory
cd create-core-dapp
# Install dependencies
npm install
# or
yarn install
# Navigate to the created dApp folder
cd your-dapp-name
# Start development server
npm run dev
# or
yarn dev
Create a .env.local
file in the root directory:
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_project_id_here
PRIVETKEY=your_private_key
create-dapp-template/
├── artifacts/ # Hardhat compiled contract artifacts
├── cache/ # Hardhat cache
├── contracts/ # Smart contracts
├── scripts/ # Hardhat deployment scripts
├── src/
│ ├── abi/ # Auto-synced ABIsfor frontend usage
│ ├── pages/ # Next.js pages
│ ├── styles/ # CSS styles
│ └── wagmi.ts # Wallet configuration
├── test/ # Test files
├── package.json # Project dependencies
├── tsconfig.json # TypeScript configuration
└── hardhat.config.js # Hardhat configuration
Place them in the contracts/
folder
Example: Replace Lock.sol
with your custom .sol file
npx hardhat compile
Place them in the test/
folder
Format: <contract-name>.test.js
npx hardhat test
Place your deployment scripts inside the scripts/
directory (e.g., deploy.js).
Ensure your wallet's private key is added to the .env file, and that the wallet has sufficient funds on the target network.
npx hardhat run scripts/deploy.js --network <network_name>
Replace <network_name>
with the network you want to deploy to (e.g., core_testnet2
)
// src/wagmi.ts
import { getDefaultConfig } from "@rainbow-me/rainbowkit";
import { coreDao, coreTestnet1, coreTestnet2 } from "wagmi/chains";
export const config = getDefaultConfig({
appName: "Core Quickstart",
projectId: process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID!,
chains: [coreDao, coreTestnet1, coreTestnet2],
ssr: true,
});
After setting up your contracts and installing dependencies, you can start the Next.js frontend development server with:
npm run dev
or
yarn dev
This will start the application at http://localhost:3000 by default.
After compiling your smart contracts with Hardhat, the ABI (Application Binary Interface) will be automatically copied to the src/abi
directory by a custom Hardhat task.
To use the ABI in your frontend:
-
Import the ABI in your component:
Use a default import to bring the ABI into your TypeScript/React component:// Example usage in a React component import YourContractABI from '../abi/YourContract.json'; import { useContractRead } from 'wagmi'; export function YourComponent() { const { data } = useContractRead({ address: 'YOUR_CONTRACT_ADDRESS', abi: YourContractABI, functionName: 'yourFunction', }); return ( // Your component JSX ); }
Note: If you encounter a TypeScript error when importing the JSON file, ensure your
tsconfig.json
includes"resolveJsonModule": true
undercompilerOptions
. -
Keep ABIs up to date:
Whenever you update and recompile your contracts, the ABI insrc/abi
will be updated automatically.