A comprehensive Web3 Dashboard and Interactive Portal built with Next.js 14, featuring wallet integration, smart contract interactions, NFT gallery, and live blockchain data.
- π Wallet Integration β Connect MetaMask, WalletConnect, Coinbase Wallet
- π Dashboard Widgets β Real-time stats, earnings charts, node status
- πΌοΈ NFT Gallery β View and manage your NFT collection
- π Live Data β Gas prices, token prices, transaction history
- π¨ Beautiful UI β Fynex-style design with smooth animations
- π Dark Mode β Full light/dark theme support
- π± Responsive β Works on desktop, tablet, and mobile
Based on the Fynex dashboard style:
- Color Palette: Soft lavender/purple gradients (#E8E4F5, #C4B5FD, #8B5CF6)
- Cards: White/light backgrounds with subtle shadows and rounded corners
- Floating Elements: Crypto icons with gentle floating animations
- Typography: Clean sans-serif with bold headings
- Animations: Smooth transitions using Framer Motion
- Frontend: Next.js 14, React 18, TypeScript
- Styling: Tailwind CSS, Shadcn UI
- Web3: Wagmi, RainbowKit, Viem, Ethers.js
- Animations: Framer Motion, Three.js, React Three Fiber
- Charts: Recharts
- Testing: Jest, React Testing Library, Playwright
- Mock Data: Custom mock database for development
# Install dependencies
npm install
# Set up environment variables
cp .env.local.example .env.local
# Seed mock data (for development)
npm run db:seed
# Start development server
npm run dev-
Development Mode
npm run dev
-
Mock Database
By default, the app runs with
MOCK_DB=truefor development:- Mock user: "Adam McCall"
- Wallet:
0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb - Pre-seeded NFTs, transactions, and portfolio stats
-
Connect Wallet
Click "Connect Wallet" and select a provider. In mock mode, this simulates a connection without requiring an actual wallet.
src/
βββ app/ # Next.js App Router
β βββ api/ # API endpoints
β βββ globals.css # Global styles
β βββ layout.tsx # Root layout
β βββ page.tsx # Homepage
βββ components/ # React components
β βββ 3d/ # Three.js components
β βββ animations/ # Framer Motion components
β βββ dashboard/ # Dashboard widgets
β βββ ui/ # Base UI components
β βββ ...
βββ lib/ # Utilities and hooks
β βββ hooks/ # Custom React hooks
β βββ mock-db.ts # Mock database
β βββ utils.ts # Helper functions
β βββ wagmi-config.ts # Web3 configuration
βββ types/ # TypeScript types
β βββ index.ts # Type definitions
βββ __tests__/ # Test files
βββ components/ # Component tests
βββ lib/ # Utility tests
βββ ...
e2e/ # Playwright E2E tests
βββ dashboard.spec.ts
# Run unit tests
npm test
# Run tests with coverage
npm run test:coverage
# Run E2E tests
npm run test:e2e| Method | Path | Description |
|---|---|---|
GET |
/api/wallet/connect |
Initialize wallet connection |
GET |
/api/wallet/balance |
Fetch wallet balance |
GET |
/api/wallet/nfts |
Fetch NFTs |
GET |
/api/wallet/transactions |
Fetch transaction history |
POST |
/api/contract/read |
Read contract data |
POST |
/api/contract/write |
Write to contract |
GET |
/api/blockchain/gas |
Fetch gas prices |
GET |
/api/blockchain/prices |
Fetch token prices |
POST |
/api/auth/siwe |
Sign-In with Ethereum |
GET |
/api/portfolio/stats |
Fetch portfolio stats |
RootLayoutβ App wrapper with providersNavbarβ Top navigation barSidebarβ Collapsible sidebarDashboardLayoutβ Main dashboard wrapper
StatCardβ Gradient stat cardsEarningStatisticsβ Line chart with earningsNodeStatusβ Node health tableAchievementTiersβ Tier progress trackerReferralWidgetβ Referral code display
WalletConnectβ Wallet connection modalWalletButtonβ Connect/disconnect buttonNFTGalleryβ NFT grid displayTransactionListβ Transaction history
Hero3Dβ Three.js hero componentFloatingIconsβ Animated crypto iconsAnimatedBackgroundβ Gradient mesh backgroundPageTransitionβ Framer Motion transitions
# App
NEXT_PUBLIC_APP_NAME="Wemo Web3 Dashboard"
NEXT_PUBLIC_APP_URL=http://localhost:3000
# Blockchain
NEXT_PUBLIC_CHAIN_ID=11155111
NEXT_PUBLIC_CHAIN_NAME="Sepolia"
NEXT_PUBLIC_RPC_URL=https://rpc.sepolia.org
NEXT_PUBLIC_EXPLORER_URL=https://sepolia.etherscan.io
# Wallet Connect
NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID=your-project-id
# Mock DB
MOCK_DB=true
NEXT_PUBLIC_MOCK_USER_NAME="Adam McCall"
NEXT_PUBLIC_MOCK_USER_WALLET="0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"Custom colors configured in tailwind.config.js:
web3-lavender: #E8E4F5web3-purple: #C4B5FDweb3-violet: #8B5CF6web3-indigo: #6366F1
- β Use mock data for development
- β
Test with
MOCK_DB=true - β Follow TypeScript strict mode
- β Write tests for new features
- β Use Framer Motion for animations
- β Maintain responsive design
- β Modify production configs
- β Skip animation implementations
- β Ignore mobile responsiveness
- β Deploy without testing
- β Break existing functionality
- Phase 1: Project scaffolding (Week 1)
- Phase 2: Core features (Week 2)
- Phase 3: Web3 integration (Week 3)
- Phase 4: NFT gallery (Week 4)
- Phase 5: 3D & animations (Week 5)
- Phase 6: Polish & testing (Week 6)
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
MIT License - see LICENSE file for details
- Design inspired by Fynex dashboard
- Built with Next.js and the amazing React ecosystem
- Icons from Heroicons and Lucide
For issues and questions, please open an issue on GitHub.
Version: 1.0.0
Last Updated: March 19, 2026
Status: Phase 1 & 2 Complete β