Skip to content

A CLI tool to quickly scaffold dApps on Core Blockchain. Preconfigured with Hardhat, Next.js, and RainbowKit for a streamlined development experience.

Notifications You must be signed in to change notification settings

coredao-org/create-core-dapp

Repository files navigation

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.

npm version npm downloads

πŸš€ Quick Start

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

✨ 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:
    node --version
    Download from nodejs.org.

πŸ“¦ Installation

Using npm (Recommended)

# Full-stack DApp
npx create-core-dapp@latest your-dapp-name

# Hardhat-only project
npx create-core-dapp@latest your-dapp-name --hardhat

Using yarn

# Full-stack DApp
yarn create-core-dapp your-dapp-name

# Hardhat-only project
yarn create-core-dapp your-dapp-name --hardhat

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

πŸ“‹ Project Types

Full-Stack DApp (Default)

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

Hardhat-Only Project

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

▢️ Usage

For Full-Stack Projects

# Navigate to the created dApp folder
cd your-dapp-name

# Install dependencies
npm install

# Start development server
npm run dev
# or
yarn dev

For Hardhat-Only Projects

# 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

πŸ”§ Configuration

For Full-Stack Projects

Create a .env.local file in the root directory:

NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_project_id_here
PRIVETKEY=your_private_key

For Hardhat-Only Projects

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

πŸ—‚οΈ 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, coreTestnet2 } from "wagmi/chains";

export const config = getDefaultConfig({
  appName: "Core Quickstart",
  projectId: process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID!,
  chains: [coreDao, 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:

  1. 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 under compilerOptions.

  2. Keep ABIs up to date:
    Whenever you update and recompile your contracts, the ABI in src/abi will be updated automatically.

About

A CLI tool to quickly scaffold dApps on Core Blockchain. Preconfigured with Hardhat, Next.js, and RainbowKit for a streamlined development experience.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published