⚛ Frontend Architecture

Tech Stack

Project Structure

frontend/src/
├── app/                    # App Router pages
│   ├── layout.tsx          # Root layout (header, footer, providers)
│   ├── page.tsx            # Home page with hero, features, stats
│   ├── not-found.tsx       # Custom 404 page
│   ├── faucet/page.tsx     # Faucet claim interface
│   ├── swap/page.tsx       # Swap trading interface
│   └── analytics/          # Analytics dashboard
│       ├── page.tsx        # Server component (metadata + layout)
│       └── analytics-client.tsx  # Client component (data + charts)
├── components/             # Shared UI components
│   ├── ui/                 # shadcn/ui primitives (13 components)
│   ├── layout/             # Header, Footer, WalletButton
│   ├── home/               # StatsCounters, AnimatedSection
│   ├── faucet/             # FaucetClaimCard, FaucetAnalytics
│   ├── swap/               # SwapCard, SlippageSettings, LiquidityInfo
│   ├── analytics/          # StatsCards, TokenStatsTable, TradeHistoryTable, PortfolioOverview
│   └── charts/             # CandlestickChart, MarketStats
├── hooks/                  # Custom React hooks
│   ├── use-dex.ts          # DEX contract interactions
│   ├── use-faucet.ts       # Faucet contract interactions
│   ├── use-token-balances.ts  # Token balance queries
│   ├── use-analytics.ts    # Analytics data (simulated + on-chain)
│   └── use-market-data.ts  # CoinGecko market data
└── lib/                    # Utilities and constants
    ├── constants.ts        # Contract addresses, token metadata
    ├── wagmi.ts            # wagmi configuration
    ├── market-data.ts      # CoinGecko API client
    ├── dex-abi.ts          # DEX + ERC20 ABIs
    ├── faucet-abi.ts       # Faucet ABI
    └── utils.ts            # cn() utility (tailwind-merge + clsx)

State Management

Component Patterns