dapp-slaps
dapp-slaps copied to clipboard
A starter template for building Ethereum dapps. 👏
What's included
- SvelteKit app
- Auto-generated and fully-typed ABIs using wagmi-generate
- Web3modal connect button using wagmi-core
- Foundry contracts
- Configured for easy multi-chain deployments
Create your dapp with one-click deploy button (recommended)
- Click the Deploy with Vercel button above
- Clone and cd the repo that was created by Vercel using
git clone <REPO_NAME> && cd <REPO_NAME>
- Install Foundry dependency because Vercel doesn't clone the submodules:
forge install foundry-rs/forge-std
(must have foundry installed, see here: https://book.getfoundry.sh/getting-started/installation) - Install packages and copy .env.example files:
sh setup.sh
- Set mnemonic phrase in root
.env
for test accounts (generate a bip39 mnemonic) - Set web3modal project id in
.env
(obtain a project id for web3modal)
Create your dapp manually
- Clone/fork the repo:
git clone https://github.com/d1onys1us/dapp-slaps.git
- Install packages and copy .env.example files:
cd dapp-slaps && sh setup.sh
- Set mnemonic phrase in root
.env
for test accounts (generate a bip39 mnemonic) - Set web3modal project id in
.env
(obtain a project id for web3modal) - Source environment vars:
source .env
- (optional) if using vscode check the vscode config section
Start the development environment
You will have three development windows, start them all and source all .env files with
source .env && source packages/app/.env
.
- Start local chain:
anvil -m $MNEMONIC
- Deploy the Foo contract:
forge script Deploy --broadcast --rpc-url $FOUNDRY && pnpm -F app wagmi:generate
- Start app:
pnpm -F app dev
Get testnet ETH
Sepolia
Goerli
Common app commands
Start the app locally
pnpm -F app dev
Generate typed ABIs from Foundry contracts
pnpm -F app wagmi
Common Foundry commands
Install a Foundry package
- Start by installing the package (example: openzeppelin-contracts):
forge install OpenZeppelin/openzeppelin-contracts
- Regenerate the remappings for the contract imports (run this from the project root):
forge remappings > remappings.txt
Start local anvil chain from mnemonic
anvil -m $MNEMONIC
Deploy contracts to some chain and generate types
forge script Deploy --broadcast --rpc-url $FOUNDRY && pnpm -F app wagmi:generate
Troubleshooting
- Try resetting account in MetaMask
- Try clearing all browser storage
- Try disconnecting account and reconnecting
- Ensure all env vars are set
Acknowledgements
- PaulRBerg Foundry template: https://github.com/PaulRBerg/foundry-template
- Taiko monorepo: https://github.com/taikoxyz/taiko-mono
- Optimism Starter: https://github.com/ethereum-optimism/optimism-starter
- ScaffoldEth2: https://github.com/scaffold-eth/se-2