Install Template
To get started, you can either clone the boilerplate repository for a quick setup or recreate it from scratch to better understand its structure.
🔗 Template Repository
You can find the template here: GitHub - create-builder-codes-dapp
Option 1: Clone and Set Up the Repository
1️⃣ Clone the Repository
Run the following command to clone the template:
Then install dependencies:
2️⃣ Change the Git Remote to Your Own Repository
To push your changes to a personal GitHub repository, update the remote URL:
3️⃣ Configure the Environment Variables
Update the .env
file with your custom settings - RPC List:
4️⃣ Run the Application
Once everything is set up, start the development server:
Your application should now be up and running!
Option 2: Build from Scratch
While cloning the boilerplate is faster, this approach helps you better understand the app’s architecture and dependencies.
1. Install Next.js
We’ll start by setting up a new Next.js 15 project.
📌 Run the following command:
📚 Reference: Next.js Installation Guide
2. Project Structure
Your app will be structured as follows:
📁 app/
app/
Houses Next.js routes and pages.
Main entry point for the application.
📁 components/
components/
Stores reusable components for your pages.
📁 hooks/
hooks/
Contains custom React hooks for logic reuse (e.g.,
useAuth()
,useFetchData()
).
📁 lib/
lib/
config/
→ Global settings (e.g., API URLs, environment variables).helpers/
→ Utility functions (e.g.,formatDate()
,parseCookies()
).services/
→ API call logic (e.g.,authService.ts
,userService.ts
).types/
→ TypeScript interfaces for better type safety.
3. Install & Configure Wagmi (Wallet Connection)
Wagmi is used for wallet connections and blockchain interactions.
📌 Install dependencies:
📚 Reference: Wagmi Documentation
🔧 Modify the following files:
📁 lib/config/
index.ts
→ Fetches configuration from.env
wagmi.ts
→ Creates the Wagmi config using AppKit Documentation.chain.ts
→ Defines the Hyperliquid EVM testnetaxios.ts
→ Installs and configures Axios for API calls
📁 components/
ContextProvider.tsx
→ Wraps the app inWagmiProvider
and passes the config.UserProvider.tsx
→ Manages user state based on wallet connection (wagmi
+localStorage
).📌 Note: Consider improving Builder Fee storage (DB or blockchain instead of local cache).
📁 lib/store.ts
(State Management)
Zustand is used to manage global state efficiently.
📌 Install Zustand:
Responsibilities of store.ts
:
Define user-related state types (
User
,Agent
,UserStoreState
).Create Zustand store for updating, resetting, and accessing user data globally.
📚 Reference: Zustand Documentation
4. UI & Styling Setup
📌 Install required packages:
📚 Reference: shadcn/UI Installation Guide
Configure UI files
tailwind.config.ts
→ Customize Tailwind settings (Example)globals.css
→ Define base styles (Example)lib/utils.ts
→ Utility functions for stylingcomponents/ui/
→ Copy & paste shadcn/UI components (e.g.,toast.tsx
,button.tsx
, etc.).
📌 Important: shadcn/UI is not a component library—it's a collection of reusable UI components that you copy manually.
📚 Reference: Radix UI (Shadcn's Base Library)
5. Blockchain Connection (Hyperliquid Integration)
Key Components:
📁 app/page.tsx
Displays either the trading widget (if connected) or the wallet connection button.
📁 components/
ConnectWallet.tsx
→ Wraps aConnect Wallet
button using AppKit.Trade.tsx
→ Trading widget for buying/selling assets.
📁 components/ApproveBuilderFee.tsx
Ensures users approve the Builder Fee before trading.
📁 lib/services/
approve-builder.ts
→ Handles fee approval via Wagmi.🔹 Setup Instructions: Refer to the documentation Dapp Setup Guide for detailed steps on integrating your Dapp with the blockchain.
📁 lib/services/
builder-info.ts
→ Calls Hyperliquid API/info
endpoint (API Docs).
6. Agent-Based Trading
Hyperliquid allows trading via an "agent" account.
Key Files:
components/ApproveAgent.tsx
Creates a new account (agent) for secure order placement without signing each time.
The agent cannot move user funds, making it a safer approach.
lib/services/approve-agent.ts
Calls Hyperliquid Exchange API for agent approval.
📌 Security Note: The agent’s private key is generated locally—ensure it’s never exposed or stored insecurely.
7. Order Execution
Handles placing, signing, and submitting trades.
Key Services:
market-order.ts
→/exchange
(trade execution)mid-price.ts
→/info
(retrieves real-time mid-prices)balances.ts
→/info
(fetches user balances)token-details.ts
→/info
(retrieves token metadata)signing.ts
→ Uses MessagePack for encoding.
8. Final Steps: ESLint & Configuration
📌 Update ESLint rules (eslint.config.mjs
):
📌 Modify Next.js config (next.config.ts
)
Check the example file.
Conclusion
By following this guide, you’ve built the Builder Codes Dapp from scratch, gaining a deep understanding of:
✅ Next.js & TypeScript setup ✅ Wallet connection & Wagmi configuration ✅ API integration with Hyperliquid ✅ Trading execution with agent-based security ✅ UI & state management with shadcn/UI & Zustand
Last updated