Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (create-core-dapp) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
create-core-dapp
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.
π Quick Start
Spin up your DApp with just one command:
npx create-core-dapp your-dapp-name
β¨ Features
- β‘ 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
π Prerequisites
- Node.js: Version 20.x or higher is recommended. You can check your version with:Download from nodejs.org.
node --version
π¦ Installation
Using npm (Recommended)
npx create-core-dapp@latest your-dapp-name
Using yarn
yarn create-core-dapp your-dapp-name
Clone manually:
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
βΆοΈ Usage
# Navigate to the created dApp folder
cd your-dapp-name
# Start development server
npm run dev
# or
yarn dev
π§ Configuration
Create a .env.local
file in the root directory:
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_project_id_here
PRIVETKEY=your_private_key
ποΈ Project Structure
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
π οΈ Compile Contracts
Place them in the contracts/
folder
Example: Replace Lock.sol
with your custom .sol file
npx hardhat compile
β Run Tests
Place them in the test/
folder
Format: <contract-name>.test.js
npx hardhat test
π Deploy Contracts
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
)
π Wallet Setup
// 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,
});
π Run the Frontend
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.
π ABI Usage
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.