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:
# Full-stack DApp (Next.js + Hardhat)
npx create-core-dapp your-dapp-name
# Hardhat-only project
npx create-core-dapp your-dapp-name --hardhat
- β‘ 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
# Full-stack DApp
npx create-core-dapp@latest your-dapp-name
# Hardhat-only project
npx create-core-dapp@latest your-dapp-name --hardhat
# Full-stack DApp
yarn create-core-dapp your-dapp-name
# Hardhat-only project
yarn create-core-dapp your-dapp-name --hardhat
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
Creates a complete DApp with both frontend and smart contract development capabilities:
- Next.js frontend with RainbowKit wallet integration
- Hardhat for smart contract development
- Pre-configured for Core Mainnet and Testnet
- Auto-synced ABIs between contracts and frontend
Creates a minimal project focused solely on smart contract development:
- Hardhat configuration for Core networks
- Smart contract templates and deployment scripts
- No frontend dependencies
- Perfect for contract-only development or when you want to use a different frontend framework
# Navigate to the created dApp folder
cd your-dapp-name
# Install dependencies
npm install
# Start development server
npm run dev
# or
yarn dev
# Navigate to the created project folder
cd your-dapp-name
# Install dependencies
npm install
# Copy environment template
cp .env.example .env
# Compile contracts
npm run compile
Create a .env.local
file in the root directory:
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_project_id_here
PRIVETKEY=your_private_key
Copy the .env.example
file to .env
and fill in your values:
PRIVATEKEY=your_private_key_here
CORE_TEST2_SCAN_KEY=your_api_key
CORE_MAIN_SCAN_KEY=your_api_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, coreTestnet2 } from "wagmi/chains";
export const config = getDefaultConfig({
appName: "Core Quickstart",
projectId: process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID!,
chains: [coreDao, 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 { useReadContract } from 'wagmi'; export function YourComponent() { const { data } = useReadContract({ 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.