A Comprehensive Guide to Building a Next.js 14 App with Web3 Integration
This guide will walk you through the process of building a Next.js 14 application with Web3 integration, leveraging best practices and key principles for a robust and performant application.
Project Setup
1.Initialize a Next.js project:
bash
npx create-next-app@latest my-web3-app --ts
- Install dependencies:
bash
npm install @wagmi/core @wagmi/react @wagmi/cli ethers wagmi-viem viem ethers.js next-auth
Project Structure
“`
my-web3-app/
├── public/
│ └── favicon.ico
├── src/
│ ├── components/
│ │ ├── auth-wizard/
│ │ │ ├── index.tsx
│ │ │ └── components/
│ │ │ ├── AuthForm.tsx
│ │ │ └── ConnectWalletButton.tsx
│ │ ├── connect-wallet/
│ │ │ ├── index.tsx
│ │ │ └── components/
│ │ │ └── ConnectWalletButton.tsx
│ │ ├── nft-gallery/
│ │ │ ├── index.tsx
│ │ │ └── components/
│ │ │ └──NFTCard.tsx
│ │ ├── home/
│ │ │ ├── index.tsx
│ │ │ └── components/
│ │ │ └── Hero.tsx
│ │ ├── layouts/
│ │ │ ├── main.tsx
│ │ │ └── default.tsx
│ │ ├── loading/
│ │ │ └── index.tsx
│ │ ├── footer/
│ │ │ └── index.tsx
│ │ ├── header/
│ │ │ └──index.tsx
│ │ └── app/
│ │ └── page.tsx
│ ├── hooks/
│ │ ├── useWallet.ts
│ │ └── useNFTData.ts
│ ├── lib/
│ │ ├── constants.ts
││ ├── utils.ts
│ │ ├── wagmi.config.ts
│ │ └── web3.ts
│ ├── pages/
│ │ └── api/
│ │ └── auth/[…nextauth].ts
│ ├── app/
│ │ └── page.tsx
│ ├── styles/
│ │ └── globals.css
│ ├── types/
│ │ └── index.d.ts
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
││ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │└── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │└── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├──app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
││ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └──layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
││ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │└── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │└── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├──app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
││ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └──layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
││ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │└── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │└── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├──app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
││ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └──layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
││ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │└── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │└── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├──app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
││ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └──layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
││ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │└── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │└── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├──app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
││ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └──layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
││ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │└── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │└── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├──app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
││ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └──layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
││ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │└── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │└── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├──app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
││ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └──layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
││ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │└── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │└── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├──app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
││ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └──layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
│ ├── app/
│ │ └── page.tsx
│ ├── app/
│ │ └── layout.tsx
Views: 0