diff --git a/README.md b/README.md index 1b3ee51..ccdd7db 100644 --- a/README.md +++ b/README.md @@ -1 +1,78 @@ -# Fullstack Web3 Template +# Fullstack Web3 Template v2.1.0 + +## QuickStart + +**You need run 3 app, using 3 terminals**: + +1. Frontend +2. Blockchain local (anvil) +3. Deploy your smartcontracts into blockchain + +### Frontend + +1. **Install frontend** + +```bash +cd ui +npm install # or yarn or pnpm install +``` + +2. **Run application** + +```bash +npm run dev # or yarn dev or pnpm dev +``` + +### Blockchain + +```bash +anvil -b 1 # Mining blocks every 1 second +``` + +### Deploy your Smartcontracts + +```bash +cd smartcontracts +./deploy.local.sh +``` + +## FWT Structure + +``` +├── smartcontracts/ +│ ├── ... +│ ├── lib +│ ├── deploy-on-local.sh +│ ├── script +│ │ └── deploy.local.s.sol +│ ├── src +│ │ └── Counter.sol +│ └── test +│ ├── BaseSetup.t.sol +│ ├── Counter.t.sol +│ └── Utils.t.sol +└── ui/ + ├── ... + ├── contracts + │ └── deployedContracts.ts + └── package.json +``` + +**Explain**: + +- The **contracts** folder contains everything you need to build smartcontracts. +- The **ui** folder contains everything you need to interact with your smartcontract using frontend. + +### `contracts` structure + +- **`deploy-on-local.sh`**: just call it to deploy, it makes deployment simple without copying and pasting things. +- **`src/*`**: the folder where we will write our contracts. +- **`test/*`**: the folder where we will write our tests. +- **`lib/*`**: the folder where the foundry stores the libraries. +- **`script/deploy.local.s.sol`**: the solidity script responsible for actually doing the deployment. +- **`test/BaseSetup.t.sol`**: is the contract where we are going to configure the tests. + +### `ui` structure + +- **`contracts/deployedContracts.ts`**: ABI of the contract that will be ‘auto-magically’ copied by the `smartcontracts/deploy.py` script. +- **`package.json`**: list of dependencies and commands to run the frontend. diff --git a/smartcontracts/deploy.py b/smartcontracts/deploy.py index e1bf932..f774eb0 100644 --- a/smartcontracts/deploy.py +++ b/smartcontracts/deploy.py @@ -45,7 +45,7 @@ def abi_path(name) -> str: typescript_content = f""" -import {{ GenericContractsDeclaration }} from "~~/utils/scaffold-eth/contract"; +import {{ GenericContractsDeclaration }} from "~~/utils/fwt/contract"; const deployedContracts = {{ {CHAIN_ID}: {dumps({ diff --git a/ui/app/blockexplorer/_components/AddressLogsTab.tsx b/ui/app/blockexplorer/_components/AddressLogsTab.tsx index 9d2ab0e..30c0208 100644 --- a/ui/app/blockexplorer/_components/AddressLogsTab.tsx +++ b/ui/app/blockexplorer/_components/AddressLogsTab.tsx @@ -1,6 +1,6 @@ import { Address } from "viem"; import { useContractLogs } from "~~/hooks/scaffold-eth"; -import { replacer } from "~~/utils/scaffold-eth/common"; +import { replacer } from "~~/utils/fwt/common"; export const AddressLogsTab = ({ address }: { address: Address }) => { const contractLogs = useContractLogs(address); diff --git a/ui/app/blockexplorer/_components/TransactionsTable.tsx b/ui/app/blockexplorer/_components/TransactionsTable.tsx index 118d912..3e6f1a5 100644 --- a/ui/app/blockexplorer/_components/TransactionsTable.tsx +++ b/ui/app/blockexplorer/_components/TransactionsTable.tsx @@ -2,8 +2,8 @@ import { TransactionHash } from "./TransactionHash"; import { formatEther } from "viem"; import { Address } from "~~/components/scaffold-eth"; import { useTargetNetwork } from "~~/hooks/scaffold-eth/useTargetNetwork"; -import { TransactionWithFunction } from "~~/utils/scaffold-eth"; -import { TransactionsTableProps } from "~~/utils/scaffold-eth/"; +import { TransactionWithFunction } from "~~/utils/fwt"; +import { TransactionsTableProps } from "~~/utils/fwt/"; export const TransactionsTable = ({ blocks, transactionReceipts }: TransactionsTableProps) => { const { targetNetwork } = useTargetNetwork(); diff --git a/ui/app/blockexplorer/address/[address]/page.tsx b/ui/app/blockexplorer/address/[address]/page.tsx index 85a30d0..6cd2df4 100644 --- a/ui/app/blockexplorer/address/[address]/page.tsx +++ b/ui/app/blockexplorer/address/[address]/page.tsx @@ -3,8 +3,8 @@ import path from "path"; import { hardhat } from "viem/chains"; import { AddressComponent } from "~~/app/blockexplorer/_components/AddressComponent"; import deployedContracts from "~~/contracts/deployedContracts"; -import { isZeroAddress } from "~~/utils/scaffold-eth/common"; -import { GenericContractsDeclaration } from "~~/utils/scaffold-eth/contract"; +import { isZeroAddress } from "~~/utils/fwt/common"; +import { GenericContractsDeclaration } from "~~/utils/fwt/contract"; type PageProps = { params: { address: string }; diff --git a/ui/app/blockexplorer/layout.tsx b/ui/app/blockexplorer/layout.tsx index 1abc7ec..9517584 100644 --- a/ui/app/blockexplorer/layout.tsx +++ b/ui/app/blockexplorer/layout.tsx @@ -1,8 +1,8 @@ -import { getMetadata } from "~~/utils/scaffold-eth/getMetadata"; +import { getMetadata } from "~~/utils/fwt/getMetadata"; export const metadata = getMetadata({ title: "Block Explorer", - description: "Block Explorer created with 🏗 Scaffold-ETH 2", + description: "Block Explorer created with 🏗 Fullstack Web3 Template", }); const BlockExplorerLayout = ({ children }: { children: React.ReactNode }) => { diff --git a/ui/app/blockexplorer/page.tsx b/ui/app/blockexplorer/page.tsx index 61e6fc6..4dd0572 100644 --- a/ui/app/blockexplorer/page.tsx +++ b/ui/app/blockexplorer/page.tsx @@ -6,7 +6,7 @@ import type { NextPage } from "next"; import { hardhat } from "viem/chains"; import { useFetchBlocks } from "~~/hooks/scaffold-eth"; import { useTargetNetwork } from "~~/hooks/scaffold-eth/useTargetNetwork"; -import { notification } from "~~/utils/scaffold-eth"; +import { notification } from "~~/utils/fwt"; const BlockExplorer: NextPage = () => { const { blocks, transactionReceipts, currentPage, totalBlocks, setCurrentPage, error } = useFetchBlocks(); diff --git a/ui/app/blockexplorer/transaction/[txHash]/page.tsx b/ui/app/blockexplorer/transaction/[txHash]/page.tsx index 3a49def..3a89999 100644 --- a/ui/app/blockexplorer/transaction/[txHash]/page.tsx +++ b/ui/app/blockexplorer/transaction/[txHash]/page.tsx @@ -1,7 +1,7 @@ import TransactionComp from "../_components/TransactionComp"; import type { NextPage } from "next"; import { Hash } from "viem"; -import { isZeroAddress } from "~~/utils/scaffold-eth/common"; +import { isZeroAddress } from "~~/utils/fwt/common"; type PageProps = { params: { txHash?: Hash }; diff --git a/ui/app/blockexplorer/transaction/_components/TransactionComp.tsx b/ui/app/blockexplorer/transaction/_components/TransactionComp.tsx index ed9b7ee..b1fa992 100644 --- a/ui/app/blockexplorer/transaction/_components/TransactionComp.tsx +++ b/ui/app/blockexplorer/transaction/_components/TransactionComp.tsx @@ -7,8 +7,8 @@ import { hardhat } from "viem/chains"; import { usePublicClient } from "wagmi"; import { Address } from "~~/components/scaffold-eth"; import { useTargetNetwork } from "~~/hooks/scaffold-eth/useTargetNetwork"; -import { decodeTransactionData, getFunctionDetails } from "~~/utils/scaffold-eth"; -import { replacer } from "~~/utils/scaffold-eth/common"; +import { decodeTransactionData, getFunctionDetails } from "~~/utils/fwt"; +import { replacer } from "~~/utils/fwt/common"; const TransactionComp = ({ txHash }: { txHash: Hash }) => { const client = usePublicClient({ chainId: hardhat.id }); diff --git a/ui/app/debug/_components/DebugContracts.tsx b/ui/app/debug/_components/DebugContracts.tsx index 2188a6f..5d16676 100644 --- a/ui/app/debug/_components/DebugContracts.tsx +++ b/ui/app/debug/_components/DebugContracts.tsx @@ -4,8 +4,8 @@ import { useEffect, useMemo } from "react"; import { useLocalStorage } from "usehooks-ts"; import { BarsArrowUpIcon } from "@heroicons/react/20/solid"; import { ContractUI } from "~~/app/debug/_components/contract"; -import { ContractName, GenericContract } from "~~/utils/scaffold-eth/contract"; -import { useAllContracts } from "~~/utils/scaffold-eth/contractsData"; +import { ContractName, GenericContract } from "~~/utils/fwt/contract"; +import { useAllContracts } from "~~/utils/fwt/contractsData"; const selectedContractStorageKey = "scaffoldEth2.selectedContract"; diff --git a/ui/app/debug/_components/contract/ContractInput.tsx b/ui/app/debug/_components/contract/ContractInput.tsx index 766431e..7543260 100644 --- a/ui/app/debug/_components/contract/ContractInput.tsx +++ b/ui/app/debug/_components/contract/ContractInput.tsx @@ -12,7 +12,7 @@ import { IntegerInput, IntegerVariant, } from "~~/components/scaffold-eth"; -import { AbiParameterTuple } from "~~/utils/scaffold-eth/contract"; +import { AbiParameterTuple } from "~~/utils/fwt/contract"; type ContractInputProps = { setForm: Dispatch>>; diff --git a/ui/app/debug/_components/contract/ContractReadMethods.tsx b/ui/app/debug/_components/contract/ContractReadMethods.tsx index f269fa9..f754ce4 100644 --- a/ui/app/debug/_components/contract/ContractReadMethods.tsx +++ b/ui/app/debug/_components/contract/ContractReadMethods.tsx @@ -1,6 +1,6 @@ import { Abi, AbiFunction } from "abitype"; import { ReadOnlyFunctionForm } from "~~/app/debug/_components/contract"; -import { Contract, ContractName, GenericContract, InheritedFunctions } from "~~/utils/scaffold-eth/contract"; +import { Contract, ContractName, GenericContract, InheritedFunctions } from "~~/utils/fwt/contract"; export const ContractReadMethods = ({ deployedContractData }: { deployedContractData: Contract }) => { if (!deployedContractData) { diff --git a/ui/app/debug/_components/contract/ContractUI.tsx b/ui/app/debug/_components/contract/ContractUI.tsx index 8fcec9d..8dfdc60 100644 --- a/ui/app/debug/_components/contract/ContractUI.tsx +++ b/ui/app/debug/_components/contract/ContractUI.tsx @@ -8,7 +8,7 @@ import { ContractWriteMethods } from "./ContractWriteMethods"; import { Address, Balance } from "~~/components/scaffold-eth"; import { useDeployedContractInfo, useNetworkColor } from "~~/hooks/scaffold-eth"; import { useTargetNetwork } from "~~/hooks/scaffold-eth/useTargetNetwork"; -import { ContractName } from "~~/utils/scaffold-eth/contract"; +import { ContractName } from "~~/utils/fwt/contract"; type ContractUIProps = { contractName: ContractName; diff --git a/ui/app/debug/_components/contract/ContractVariables.tsx b/ui/app/debug/_components/contract/ContractVariables.tsx index 9d25782..9c07d99 100644 --- a/ui/app/debug/_components/contract/ContractVariables.tsx +++ b/ui/app/debug/_components/contract/ContractVariables.tsx @@ -1,6 +1,6 @@ import { DisplayVariable } from "./DisplayVariable"; import { Abi, AbiFunction } from "abitype"; -import { Contract, ContractName, GenericContract, InheritedFunctions } from "~~/utils/scaffold-eth/contract"; +import { Contract, ContractName, GenericContract, InheritedFunctions } from "~~/utils/fwt/contract"; export const ContractVariables = ({ refreshDisplayVariables, diff --git a/ui/app/debug/_components/contract/ContractWriteMethods.tsx b/ui/app/debug/_components/contract/ContractWriteMethods.tsx index ee703a6..71c37bd 100644 --- a/ui/app/debug/_components/contract/ContractWriteMethods.tsx +++ b/ui/app/debug/_components/contract/ContractWriteMethods.tsx @@ -1,6 +1,6 @@ import { Abi, AbiFunction } from "abitype"; import { WriteOnlyFunctionForm } from "~~/app/debug/_components/contract"; -import { Contract, ContractName, GenericContract, InheritedFunctions } from "~~/utils/scaffold-eth/contract"; +import { Contract, ContractName, GenericContract, InheritedFunctions } from "~~/utils/fwt/contract"; export const ContractWriteMethods = ({ onChange, diff --git a/ui/app/debug/_components/contract/DisplayVariable.tsx b/ui/app/debug/_components/contract/DisplayVariable.tsx index bf7fe3f..46f9f48 100644 --- a/ui/app/debug/_components/contract/DisplayVariable.tsx +++ b/ui/app/debug/_components/contract/DisplayVariable.tsx @@ -9,7 +9,7 @@ import { useReadContract } from "wagmi"; import { ArrowPathIcon } from "@heroicons/react/24/outline"; import { useAnimationConfig } from "~~/hooks/scaffold-eth"; import { useTargetNetwork } from "~~/hooks/scaffold-eth/useTargetNetwork"; -import { getParsedError, notification } from "~~/utils/scaffold-eth"; +import { getParsedError, notification } from "~~/utils/fwt"; type DisplayVariableProps = { contractAddress: Address; diff --git a/ui/app/debug/_components/contract/ReadOnlyFunctionForm.tsx b/ui/app/debug/_components/contract/ReadOnlyFunctionForm.tsx index a0d097a..95a1d2b 100644 --- a/ui/app/debug/_components/contract/ReadOnlyFunctionForm.tsx +++ b/ui/app/debug/_components/contract/ReadOnlyFunctionForm.tsx @@ -14,7 +14,7 @@ import { transformAbiFunction, } from "~~/app/debug/_components/contract"; import { useTargetNetwork } from "~~/hooks/scaffold-eth/useTargetNetwork"; -import { getParsedError, notification } from "~~/utils/scaffold-eth"; +import { getParsedError, notification } from "~~/utils/fwt"; type ReadOnlyFunctionFormProps = { contractAddress: Address; diff --git a/ui/app/debug/_components/contract/Tuple.tsx b/ui/app/debug/_components/contract/Tuple.tsx index d8312fc..7d6f5b3 100644 --- a/ui/app/debug/_components/contract/Tuple.tsx +++ b/ui/app/debug/_components/contract/Tuple.tsx @@ -1,8 +1,8 @@ import { Dispatch, SetStateAction, useEffect, useState } from "react"; import { ContractInput } from "./ContractInput"; import { getFunctionInputKey, getInitialTupleFormState } from "./utilsContract"; -import { replacer } from "~~/utils/scaffold-eth/common"; -import { AbiParameterTuple } from "~~/utils/scaffold-eth/contract"; +import { replacer } from "~~/utils/fwt/common"; +import { AbiParameterTuple } from "~~/utils/fwt/contract"; type TupleProps = { abiTupleParameter: AbiParameterTuple; diff --git a/ui/app/debug/_components/contract/TupleArray.tsx b/ui/app/debug/_components/contract/TupleArray.tsx index 713431e..9fcbe15 100644 --- a/ui/app/debug/_components/contract/TupleArray.tsx +++ b/ui/app/debug/_components/contract/TupleArray.tsx @@ -1,8 +1,8 @@ import { Dispatch, SetStateAction, useEffect, useState } from "react"; import { ContractInput } from "./ContractInput"; import { getFunctionInputKey, getInitialTupleArrayFormState } from "./utilsContract"; -import { replacer } from "~~/utils/scaffold-eth/common"; -import { AbiParameterTuple } from "~~/utils/scaffold-eth/contract"; +import { replacer } from "~~/utils/fwt/common"; +import { AbiParameterTuple } from "~~/utils/fwt/contract"; type TupleArrayProps = { abiTupleParameter: AbiParameterTuple & { isVirtual?: true }; diff --git a/ui/app/debug/_components/contract/TxReceipt.tsx b/ui/app/debug/_components/contract/TxReceipt.tsx index 824eb8f..34db57a 100644 --- a/ui/app/debug/_components/contract/TxReceipt.tsx +++ b/ui/app/debug/_components/contract/TxReceipt.tsx @@ -3,7 +3,7 @@ import CopyToClipboard from "react-copy-to-clipboard"; import { TransactionReceipt } from "viem"; import { CheckCircleIcon, DocumentDuplicateIcon } from "@heroicons/react/24/outline"; import { ObjectFieldDisplay } from "~~/app/debug/_components/contract"; -import { replacer } from "~~/utils/scaffold-eth/common"; +import { replacer } from "~~/utils/fwt/common"; export const TxReceipt = ({ txResult }: { txResult: TransactionReceipt }) => { const [txResultCopied, setTxResultCopied] = useState(false); diff --git a/ui/app/debug/_components/contract/utilsContract.tsx b/ui/app/debug/_components/contract/utilsContract.tsx index 55ef9a4..43bc69c 100644 --- a/ui/app/debug/_components/contract/utilsContract.tsx +++ b/ui/app/debug/_components/contract/utilsContract.tsx @@ -1,5 +1,5 @@ import { AbiFunction, AbiParameter } from "abitype"; -import { AbiParameterTuple } from "~~/utils/scaffold-eth/contract"; +import { AbiParameterTuple } from "~~/utils/fwt/contract"; /** * Generates a key based on function metadata diff --git a/ui/app/debug/_components/contract/utilsDisplay.tsx b/ui/app/debug/_components/contract/utilsDisplay.tsx index 4c5ab20..a51f16c 100644 --- a/ui/app/debug/_components/contract/utilsDisplay.tsx +++ b/ui/app/debug/_components/contract/utilsDisplay.tsx @@ -2,7 +2,7 @@ import { ReactElement, useState } from "react"; import { TransactionBase, TransactionReceipt, formatEther, isAddress, isHex } from "viem"; import { ArrowsRightLeftIcon } from "@heroicons/react/24/solid"; import { Address } from "~~/components/scaffold-eth"; -import { replacer } from "~~/utils/scaffold-eth/common"; +import { replacer } from "~~/utils/fwt/common"; type DisplayContent = | string diff --git a/ui/app/debug/page.tsx b/ui/app/debug/page.tsx index e6fb89f..7024bb9 100644 --- a/ui/app/debug/page.tsx +++ b/ui/app/debug/page.tsx @@ -1,10 +1,10 @@ import { DebugContracts } from "./_components/DebugContracts"; import type { NextPage } from "next"; -import { getMetadata } from "~~/utils/scaffold-eth/getMetadata"; +import { getMetadata } from "~~/utils/fwt/getMetadata"; export const metadata = getMetadata({ title: "Debug Contracts", - description: "Debug your deployed 🏗 Scaffold-ETH 2 contracts in an easy way", + description: "Debug your deployed 🏗 Fullstack Web3 Template contracts in an easy way", }); const Debug: NextPage = () => { diff --git a/ui/app/layout.tsx b/ui/app/layout.tsx index be1234b..eabc361 100644 --- a/ui/app/layout.tsx +++ b/ui/app/layout.tsx @@ -2,11 +2,11 @@ import "@rainbow-me/rainbowkit/styles.css"; import { ScaffoldEthAppWithProviders } from "~~/components/ScaffoldEthAppWithProviders"; import { ThemeProvider } from "~~/components/ThemeProvider"; import "~~/styles/globals.css"; -import { getMetadata } from "~~/utils/scaffold-eth/getMetadata"; +import { getMetadata } from "~~/utils/fwt/getMetadata"; export const metadata = getMetadata({ - title: "Scaffold-ETH 2 App", - description: "Built with 🏗 Scaffold-ETH 2", + title: "Fullstack Web3 Template App", + description: "Built with 🏗 Fullstack Web3 Template", }); const ScaffoldEthApp = ({ children }: { children: React.ReactNode }) => { diff --git a/ui/app/page.tsx b/ui/app/page.tsx index b91c22f..776b742 100644 --- a/ui/app/page.tsx +++ b/ui/app/page.tsx @@ -15,7 +15,7 @@ const Home: NextPage = () => {

Welcome to - Scaffold-ETH 2 + Fullstack Web3 Template

Connected Address:

diff --git a/ui/components/Header.tsx b/ui/components/Header.tsx index f24a1de..f6d341f 100644 --- a/ui/components/Header.tsx +++ b/ui/components/Header.tsx @@ -93,8 +93,8 @@ export const Header = () => { SE2 logo
- Scaffold-ETH - Ethereum dev stack + FWT + Fullstack Web3 Template
    diff --git a/ui/components/scaffold-eth/Address/Address.tsx b/ui/components/scaffold-eth/Address/Address.tsx index 28011d5..5a7c4d9 100644 --- a/ui/components/scaffold-eth/Address/Address.tsx +++ b/ui/components/scaffold-eth/Address/Address.tsx @@ -7,7 +7,7 @@ import { normalize } from "viem/ens"; import { useEnsAvatar, useEnsName } from "wagmi"; import { BlockieAvatar } from "~~/components/scaffold-eth"; import { useTargetNetwork } from "~~/hooks/scaffold-eth/useTargetNetwork"; -import { getBlockExplorerAddressLink } from "~~/utils/scaffold-eth"; +import { getBlockExplorerAddressLink } from "~~/utils/fwt"; const textSizeMap = { "3xs": "text-[10px]", diff --git a/ui/components/scaffold-eth/Faucet.tsx b/ui/components/scaffold-eth/Faucet.tsx index 569a923..be891ac 100644 --- a/ui/components/scaffold-eth/Faucet.tsx +++ b/ui/components/scaffold-eth/Faucet.tsx @@ -7,7 +7,7 @@ import { useAccount } from "wagmi"; import { BanknotesIcon } from "@heroicons/react/24/outline"; import { Address, AddressInput, Balance, EtherInput } from "~~/components/scaffold-eth"; import { useTransactor } from "~~/hooks/scaffold-eth"; -import { notification } from "~~/utils/scaffold-eth"; +import { notification } from "~~/utils/fwt"; // Account index to use from generated hardhat accounts. const FAUCET_ACCOUNT_INDEX = 0; diff --git a/ui/components/scaffold-eth/RainbowKitCustomConnectButton/AddressInfoDropdown.tsx b/ui/components/scaffold-eth/RainbowKitCustomConnectButton/AddressInfoDropdown.tsx index a9e3125..1b7569c 100644 --- a/ui/components/scaffold-eth/RainbowKitCustomConnectButton/AddressInfoDropdown.tsx +++ b/ui/components/scaffold-eth/RainbowKitCustomConnectButton/AddressInfoDropdown.tsx @@ -15,7 +15,7 @@ import { } from "@heroicons/react/24/outline"; import { BlockieAvatar, isENS } from "~~/components/scaffold-eth"; import { useOutsideClick } from "~~/hooks/scaffold-eth"; -import { getTargetNetworks } from "~~/utils/scaffold-eth"; +import { getTargetNetworks } from "~~/utils/fwt"; const allowedNetworks = getTargetNetworks(); diff --git a/ui/components/scaffold-eth/RainbowKitCustomConnectButton/NetworkOptions.tsx b/ui/components/scaffold-eth/RainbowKitCustomConnectButton/NetworkOptions.tsx index bf16a56..05410ba 100644 --- a/ui/components/scaffold-eth/RainbowKitCustomConnectButton/NetworkOptions.tsx +++ b/ui/components/scaffold-eth/RainbowKitCustomConnectButton/NetworkOptions.tsx @@ -2,7 +2,7 @@ import { useTheme } from "next-themes"; import { useAccount, useSwitchChain } from "wagmi"; import { ArrowsRightLeftIcon } from "@heroicons/react/24/solid"; import { getNetworkColor } from "~~/hooks/scaffold-eth"; -import { getTargetNetworks } from "~~/utils/scaffold-eth"; +import { getTargetNetworks } from "~~/utils/fwt"; const allowedNetworks = getTargetNetworks(); diff --git a/ui/components/scaffold-eth/RainbowKitCustomConnectButton/index.tsx b/ui/components/scaffold-eth/RainbowKitCustomConnectButton/index.tsx index 6521200..6da5310 100644 --- a/ui/components/scaffold-eth/RainbowKitCustomConnectButton/index.tsx +++ b/ui/components/scaffold-eth/RainbowKitCustomConnectButton/index.tsx @@ -9,7 +9,7 @@ import { ConnectButton } from "@rainbow-me/rainbowkit"; import { Address } from "viem"; import { useNetworkColor } from "~~/hooks/scaffold-eth"; import { useTargetNetwork } from "~~/hooks/scaffold-eth/useTargetNetwork"; -import { getBlockExplorerAddressLink } from "~~/utils/scaffold-eth"; +import { getBlockExplorerAddressLink } from "~~/utils/fwt"; /** * Custom Wagmi Connect Button (watch balance + custom design) diff --git a/ui/contracts/deployedContracts.ts b/ui/contracts/deployedContracts.ts index 403de09..0283369 100644 --- a/ui/contracts/deployedContracts.ts +++ b/ui/contracts/deployedContracts.ts @@ -1,5 +1,5 @@ -import { GenericContractsDeclaration } from "~~/utils/scaffold-eth/contract"; +import { GenericContractsDeclaration } from "~~/utils/fwt/contract"; const deployedContracts = { 31337: {"Counter": {"address": "0x610178da211fef7d417bc0e6fed39f05609ad788", "abi": [{"type": "function", "name": "getError", "inputs": [], "outputs": [], "stateMutability": "pure"}, {"type": "function", "name": "increment", "inputs": [], "outputs": [], "stateMutability": "nonpayable"}, {"type": "function", "name": "number", "inputs": [], "outputs": [{"name": "", "type": "uint256", "internalType": "uint256"}], "stateMutability": "view"}, {"type": "function", "name": "setNumber", "inputs": [{"name": "newNumber", "type": "uint256", "internalType": "uint256"}], "outputs": [], "stateMutability": "nonpayable"}, {"type": "function", "name": "withdraw", "inputs": [{"name": "amount", "type": "uint256", "internalType": "uint256"}], "outputs": [], "stateMutability": "pure"}, {"type": "error", "name": "CustomError", "inputs": [{"name": "message", "type": "string", "internalType": "string"}]}, {"type": "error", "name": "InsufficientBalance", "inputs": [{"name": "available", "type": "uint256", "internalType": "uint256"}, {"name": "required", "type": "uint256", "internalType": "uint256"}]}]}} diff --git a/ui/contracts/externalContracts.ts b/ui/contracts/externalContracts.ts index ab6daa8..103de24 100644 --- a/ui/contracts/externalContracts.ts +++ b/ui/contracts/externalContracts.ts @@ -1,4 +1,4 @@ -import { GenericContractsDeclaration } from "~~/utils/scaffold-eth/contract"; +import { GenericContractsDeclaration } from "~~/utils/fwt/contract"; /** * @example diff --git a/ui/hooks/scaffold-eth/useDeployedContractInfo.ts b/ui/hooks/scaffold-eth/useDeployedContractInfo.ts index 8f649c3..597dcee 100644 --- a/ui/hooks/scaffold-eth/useDeployedContractInfo.ts +++ b/ui/hooks/scaffold-eth/useDeployedContractInfo.ts @@ -2,7 +2,7 @@ import { useEffect, useState } from "react"; import { useTargetNetwork } from "./useTargetNetwork"; import { useIsMounted } from "usehooks-ts"; import { usePublicClient } from "wagmi"; -import { Contract, ContractCodeStatus, ContractName, contracts } from "~~/utils/scaffold-eth/contract"; +import { Contract, ContractCodeStatus, ContractName, contracts } from "~~/utils/fwt/contract"; /** * Gets the matching contract info for the provided contract name from the contracts present in deployedContracts.ts diff --git a/ui/hooks/scaffold-eth/useFetchBlocks.ts b/ui/hooks/scaffold-eth/useFetchBlocks.ts index 7e490ad..1b894c5 100644 --- a/ui/hooks/scaffold-eth/useFetchBlocks.ts +++ b/ui/hooks/scaffold-eth/useFetchBlocks.ts @@ -10,7 +10,7 @@ import { webSocket, } from "viem"; import { hardhat } from "viem/chains"; -import { decodeTransactionData } from "~~/utils/scaffold-eth"; +import { decodeTransactionData } from "~~/utils/fwt"; const BLOCKS_PER_PAGE = 20; diff --git a/ui/hooks/scaffold-eth/useInitializeNativeCurrencyPrice.ts b/ui/hooks/scaffold-eth/useInitializeNativeCurrencyPrice.ts index 0cab720..bf472aa 100644 --- a/ui/hooks/scaffold-eth/useInitializeNativeCurrencyPrice.ts +++ b/ui/hooks/scaffold-eth/useInitializeNativeCurrencyPrice.ts @@ -3,7 +3,7 @@ import { useTargetNetwork } from "./useTargetNetwork"; import { useInterval } from "usehooks-ts"; import scaffoldConfig from "~~/scaffold.config"; import { useGlobalState } from "~~/services/store/store"; -import { fetchPriceFromUniswap } from "~~/utils/scaffold-eth"; +import { fetchPriceFromUniswap } from "~~/utils/fwt"; const enablePolling = false; diff --git a/ui/hooks/scaffold-eth/useNetworkColor.ts b/ui/hooks/scaffold-eth/useNetworkColor.ts index ec9c770..9cf5573 100644 --- a/ui/hooks/scaffold-eth/useNetworkColor.ts +++ b/ui/hooks/scaffold-eth/useNetworkColor.ts @@ -1,6 +1,6 @@ import { useTargetNetwork } from "./useTargetNetwork"; import { useTheme } from "next-themes"; -import { ChainWithAttributes } from "~~/utils/scaffold-eth"; +import { ChainWithAttributes } from "~~/utils/fwt"; export const DEFAULT_NETWORK_COLOR: [string, string] = ["#666666", "#bbbbbb"]; diff --git a/ui/hooks/scaffold-eth/useScaffoldContract.ts b/ui/hooks/scaffold-eth/useScaffoldContract.ts index 1add8cb..8324a25 100644 --- a/ui/hooks/scaffold-eth/useScaffoldContract.ts +++ b/ui/hooks/scaffold-eth/useScaffoldContract.ts @@ -3,7 +3,7 @@ import { Account, Address, Chain, Client, Transport, getContract } from "viem"; import { usePublicClient } from "wagmi"; import { GetWalletClientReturnType } from "wagmi/actions"; import { useDeployedContractInfo } from "~~/hooks/scaffold-eth"; -import { Contract, ContractName } from "~~/utils/scaffold-eth/contract"; +import { Contract, ContractName } from "~~/utils/fwt/contract"; /** * Gets a viem instance of the contract present in deployedContracts.ts or externalContracts.ts corresponding to diff --git a/ui/hooks/scaffold-eth/useScaffoldEventHistory.ts b/ui/hooks/scaffold-eth/useScaffoldEventHistory.ts index 2477a9b..0409aea 100644 --- a/ui/hooks/scaffold-eth/useScaffoldEventHistory.ts +++ b/ui/hooks/scaffold-eth/useScaffoldEventHistory.ts @@ -5,13 +5,13 @@ import { Abi, AbiEvent, ExtractAbiEventNames } from "abitype"; import { BlockNumber, GetLogsParameters } from "viem"; import { Config, UsePublicClientReturnType, useBlockNumber, usePublicClient } from "wagmi"; import { useDeployedContractInfo } from "~~/hooks/scaffold-eth"; -import { replacer } from "~~/utils/scaffold-eth/common"; +import { replacer } from "~~/utils/fwt/common"; import { ContractAbi, ContractName, UseScaffoldEventHistoryConfig, UseScaffoldEventHistoryData, -} from "~~/utils/scaffold-eth/contract"; +} from "~~/utils/fwt/contract"; const getEvents = async ( getLogsParams: GetLogsParameters, diff --git a/ui/hooks/scaffold-eth/useScaffoldReadContract.ts b/ui/hooks/scaffold-eth/useScaffoldReadContract.ts index 9d9e8f0..e962ff2 100644 --- a/ui/hooks/scaffold-eth/useScaffoldReadContract.ts +++ b/ui/hooks/scaffold-eth/useScaffoldReadContract.ts @@ -10,7 +10,7 @@ import { ContractAbi, ContractName, UseScaffoldReadConfig, -} from "~~/utils/scaffold-eth/contract"; +} from "~~/utils/fwt/contract"; /** * Wrapper around wagmi's useContractRead hook which automatically loads (by name) the contract ABI and address from diff --git a/ui/hooks/scaffold-eth/useScaffoldWatchContractEvent.ts b/ui/hooks/scaffold-eth/useScaffoldWatchContractEvent.ts index 844b4a0..3c32cd2 100644 --- a/ui/hooks/scaffold-eth/useScaffoldWatchContractEvent.ts +++ b/ui/hooks/scaffold-eth/useScaffoldWatchContractEvent.ts @@ -3,7 +3,7 @@ import { Abi, ExtractAbiEventNames } from "abitype"; import { Log } from "viem"; import { useWatchContractEvent } from "wagmi"; import { addIndexedArgsToEvent, useDeployedContractInfo } from "~~/hooks/scaffold-eth"; -import { ContractAbi, ContractName, UseScaffoldEventConfig } from "~~/utils/scaffold-eth/contract"; +import { ContractAbi, ContractName, UseScaffoldEventConfig } from "~~/utils/fwt/contract"; /** * Wrapper around wagmi's useEventSubscriber hook which automatically loads (by name) the contract ABI and diff --git a/ui/hooks/scaffold-eth/useScaffoldWriteContract.ts b/ui/hooks/scaffold-eth/useScaffoldWriteContract.ts index 4bd903f..c5f23d5 100644 --- a/ui/hooks/scaffold-eth/useScaffoldWriteContract.ts +++ b/ui/hooks/scaffold-eth/useScaffoldWriteContract.ts @@ -6,13 +6,13 @@ import { Config, UseWriteContractParameters, useAccount, useWriteContract } from import { WriteContractErrorType, WriteContractReturnType } from "wagmi/actions"; import { WriteContractVariables } from "wagmi/query"; import { useDeployedContractInfo, useTransactor } from "~~/hooks/scaffold-eth"; -import { notification } from "~~/utils/scaffold-eth"; +import { notification } from "~~/utils/fwt"; import { ContractAbi, ContractName, ScaffoldWriteContractOptions, ScaffoldWriteContractVariables, -} from "~~/utils/scaffold-eth/contract"; +} from "~~/utils/fwt/contract"; /** * Wrapper around wagmi's useWriteContract hook which automatically loads (by name) the contract ABI and address from diff --git a/ui/hooks/scaffold-eth/useTargetNetwork.ts b/ui/hooks/scaffold-eth/useTargetNetwork.ts index ff0b23d..1a703b8 100644 --- a/ui/hooks/scaffold-eth/useTargetNetwork.ts +++ b/ui/hooks/scaffold-eth/useTargetNetwork.ts @@ -2,8 +2,8 @@ import { useEffect, useMemo } from "react"; import { useAccount } from "wagmi"; import scaffoldConfig from "~~/scaffold.config"; import { useGlobalState } from "~~/services/store/store"; -import { ChainWithAttributes } from "~~/utils/scaffold-eth"; -import { NETWORKS_EXTRA_DATA } from "~~/utils/scaffold-eth"; +import { ChainWithAttributes } from "~~/utils/fwt"; +import { NETWORKS_EXTRA_DATA } from "~~/utils/fwt"; /** * Retrieves the connected wallet's network from scaffold.config or defaults to the 0th network in the list if the wallet is not connected. diff --git a/ui/hooks/scaffold-eth/useTransactor.tsx b/ui/hooks/scaffold-eth/useTransactor.tsx index c18995e..b024533 100644 --- a/ui/hooks/scaffold-eth/useTransactor.tsx +++ b/ui/hooks/scaffold-eth/useTransactor.tsx @@ -3,8 +3,8 @@ import { Hash, SendTransactionParameters, TransactionReceipt, WalletClient } fro import { Config, useWalletClient } from "wagmi"; import { SendTransactionMutate } from "wagmi/query"; import { wagmiConfig } from "~~/services/web3/wagmiConfig"; -import { getBlockExplorerTxLink, getParsedError, notification } from "~~/utils/scaffold-eth"; -import { TransactorFuncOptions } from "~~/utils/scaffold-eth/contract"; +import { getBlockExplorerTxLink, getParsedError, notification } from "~~/utils/fwt"; +import { TransactorFuncOptions } from "~~/utils/fwt/contract"; type TransactionFunc = ( tx: (() => Promise) | Parameters>[0], diff --git a/ui/public/manifest.json b/ui/public/manifest.json index bb1c96d..db374c0 100644 --- a/ui/public/manifest.json +++ b/ui/public/manifest.json @@ -1,5 +1,5 @@ { - "name": "Scaffold-ETH 2 DApp", - "description": "A DApp built with Scaffold-ETH", + "name": "Fullstack Web3 Template DApp", + "description": "A DApp built with Fullstack Web3 Template", "iconPath": "logo.svg" } diff --git a/ui/services/store/store.ts b/ui/services/store/store.ts index e033f1d..4ab03bf 100644 --- a/ui/services/store/store.ts +++ b/ui/services/store/store.ts @@ -1,6 +1,6 @@ import { create } from "zustand"; import scaffoldConfig from "~~/scaffold.config"; -import { ChainWithAttributes } from "~~/utils/scaffold-eth"; +import { ChainWithAttributes } from "~~/utils/fwt"; /** * Zustand Store diff --git a/ui/services/web3/wagmiConfig.tsx b/ui/services/web3/wagmiConfig.tsx index e207843..0c061cf 100644 --- a/ui/services/web3/wagmiConfig.tsx +++ b/ui/services/web3/wagmiConfig.tsx @@ -3,7 +3,7 @@ import { Chain, createClient, http } from "viem"; import { hardhat, mainnet } from "viem/chains"; import { createConfig } from "wagmi"; import scaffoldConfig from "~~/scaffold.config"; -import { getAlchemyHttpUrl } from "~~/utils/scaffold-eth"; +import { getAlchemyHttpUrl } from "~~/utils/fwt"; const { targetNetworks } = scaffoldConfig; diff --git a/ui/utils/scaffold-eth/block.ts b/ui/utils/fwt/block.ts similarity index 100% rename from ui/utils/scaffold-eth/block.ts rename to ui/utils/fwt/block.ts diff --git a/ui/utils/scaffold-eth/common.ts b/ui/utils/fwt/common.ts similarity index 100% rename from ui/utils/scaffold-eth/common.ts rename to ui/utils/fwt/common.ts diff --git a/ui/utils/scaffold-eth/contract.ts b/ui/utils/fwt/contract.ts similarity index 100% rename from ui/utils/scaffold-eth/contract.ts rename to ui/utils/fwt/contract.ts diff --git a/ui/utils/scaffold-eth/contractsData.ts b/ui/utils/fwt/contractsData.ts similarity index 94% rename from ui/utils/scaffold-eth/contractsData.ts rename to ui/utils/fwt/contractsData.ts index 7015a45..020c99c 100644 --- a/ui/utils/scaffold-eth/contractsData.ts +++ b/ui/utils/fwt/contractsData.ts @@ -1,5 +1,5 @@ import { useTargetNetwork } from "~~/hooks/scaffold-eth"; -import { GenericContractsDeclaration, contracts } from "~~/utils/scaffold-eth/contract"; +import { GenericContractsDeclaration, contracts } from "~~/utils/fwt/contract"; const DEFAULT_ALL_CONTRACTS: GenericContractsDeclaration[number] = {}; diff --git a/ui/utils/scaffold-eth/decodeTxData.ts b/ui/utils/fwt/decodeTxData.ts similarity index 100% rename from ui/utils/scaffold-eth/decodeTxData.ts rename to ui/utils/fwt/decodeTxData.ts diff --git a/ui/utils/scaffold-eth/fetchPriceFromUniswap.ts b/ui/utils/fwt/fetchPriceFromUniswap.ts similarity index 100% rename from ui/utils/scaffold-eth/fetchPriceFromUniswap.ts rename to ui/utils/fwt/fetchPriceFromUniswap.ts diff --git a/ui/utils/scaffold-eth/getMetadata.ts b/ui/utils/fwt/getMetadata.ts similarity index 95% rename from ui/utils/scaffold-eth/getMetadata.ts rename to ui/utils/fwt/getMetadata.ts index ad531ae..121a849 100644 --- a/ui/utils/scaffold-eth/getMetadata.ts +++ b/ui/utils/fwt/getMetadata.ts @@ -3,7 +3,7 @@ import type { Metadata } from "next"; const baseUrl = process.env.VERCEL_PROJECT_PRODUCTION_URL ? `https://${process.env.VERCEL_PROJECT_PRODUCTION_URL}` : `http://localhost:${process.env.PORT || 3000}`; -const titleTemplate = "%s | Scaffold-ETH 2"; +const titleTemplate = "%s | Fullstack Web3 Template"; export const getMetadata = ({ title, diff --git a/ui/utils/scaffold-eth/getParsedError.ts b/ui/utils/fwt/getParsedError.ts similarity index 100% rename from ui/utils/scaffold-eth/getParsedError.ts rename to ui/utils/fwt/getParsedError.ts diff --git a/ui/utils/scaffold-eth/index.ts b/ui/utils/fwt/index.ts similarity index 100% rename from ui/utils/scaffold-eth/index.ts rename to ui/utils/fwt/index.ts diff --git a/ui/utils/scaffold-eth/networks.ts b/ui/utils/fwt/networks.ts similarity index 100% rename from ui/utils/scaffold-eth/networks.ts rename to ui/utils/fwt/networks.ts diff --git a/ui/utils/scaffold-eth/notification.tsx b/ui/utils/fwt/notification.tsx similarity index 100% rename from ui/utils/scaffold-eth/notification.tsx rename to ui/utils/fwt/notification.tsx