AI-powered blockchain research and analytics platform with decentralized marketplace
- Next.js 14 - App Router, Server Components
- TypeScript - Type safety and better DX
- Tailwind CSS - Utility-first styling
- Shadcn/ui - High-quality component library
- Wagmi/Viem 2.x - Web3 interactions
- RainbowKit - Wallet connection
- Recharts - Data visualization
- React Query - Data fetching and caching
- Polygon Mumbai (Testnet)
- Sepolia (Testnet)
- Base Sepolia (Testnet)
- Arbitrum Sepolia (Testnet)
- Node.js 18+
- npm or yarn
- MetaMask or other Web3 wallet
- WalletConnect Project ID (get from cloud.walletconnect.com)
- Clone the repository
git clone <repository-url>
cd fe-coinsight- Install dependencies
npm install- Set up environment variables
# Copy the example environment file
cp env.example.txt .env.local
# Edit .env.local with your values
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_project_id_here
NEXT_PUBLIC_ENABLE_TESTNETS=true
NEXT_PUBLIC_API_URL=http://localhost:8000/api- Run development server
npm run dev- Open your browser Navigate to http://localhost:3000
fe-coinsight/
βββ src/
β βββ app/ # Next.js app router pages
β β βββ dashboard/ # Dashboard page
β β βββ marketplace/ # Research marketplace
β β βββ agents/ # AI agents registry
β β βββ reports/ # Research reports library
β β βββ layout.tsx # Root layout
β β βββ page.tsx # Homepage
β β βββ globals.css # Global styles
β βββ components/ # React components
β β βββ ui/ # Shadcn/ui components
β βββ lib/ # Utility functions
β β βββ utils.ts # Class merging utilities
β βββ providers/ # Context providers
β β βββ Web3Provider.tsx # Web3/Wallet provider
β βββ hooks/ # Custom React hooks
βββ public/ # Static assets
βββ components.json # Shadcn/ui config
βββ tsconfig.json # TypeScript config
βββ next.config.ts # Next.js config
βββ postcss.config.mjs # PostCSS config
βββ package.json # Dependencies
- β Web3 Integration - Full wallet connection with RainbowKit
- β Modern UI - Beautiful glassmorphism design with gradients
- β Dashboard - Overview of research requests and stats
- β Marketplace - Browse and filter research requests
- β Responsive Design - Works on all devices
- π AI Agents Registry - Browse and select specialized AI agents
- π Research Request Creation - Create custom research requests
- π Real-time Updates - WebSocket integration for live data
- π Reports Library - Access completed research reports
- π Portfolio Integration - Track wallet performance
- π Smart Contract Integration - Interact with on-chain marketplace
- π Data Visualization - Interactive charts with Recharts
- π Dispute Resolution - On-chain dispute handling
# Development
npm run dev # Start dev server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
# Type Checking
npm run type-check # TypeScript type checking| Variable | Description | Required |
|---|---|---|
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID |
WalletConnect project ID | Yes |
NEXT_PUBLIC_ENABLE_TESTNETS |
Enable testnet networks | No |
NEXT_PUBLIC_API_URL |
Backend API URL | Yes |
NEXT_PUBLIC_BACKEND_URL |
Backend base URL | Yes |
To add new components from shadcn/ui:
# Example: Add a button component
npx shadcn@latest add button
# Add multiple components
npx shadcn@latest add card dialog dropdown-menu- Create a new page: Add a new folder in
src/app/ - Add components: Create reusable components in
src/components/ - Styling: Use Tailwind CSS classes with the
cn()utility - Web3 Integration: Use wagmi hooks in client components
- Data Fetching: Use React Query for API calls
'use client';
import { useAccount, useBalance } from 'wagmi';
import { ConnectButton } from '@rainbow-me/rainbowkit';
export function WalletInfo() {
const { address, isConnected } = useAccount();
const { data: balance } = useBalance({ address });
if (!isConnected) return <ConnectButton />;
return (
<div>
<p>Address: {address}</p>
<p>Balance: {balance?.formatted} {balance?.symbol}</p>
</div>
);
}- Primary: Purple to Pink gradient (
from-purple-500 to-pink-600) - Background: Dark gradient (
from-slate-900 via-purple-900 to-slate-900) - Glass Effect:
bg-white/5 backdrop-blur-lg border border-white/10
- Headings: Geist Sans (variable font)
- Code: Geist Mono (variable font)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License.
For support, please open an issue in the GitHub repository or contact the development team.
Built with β€οΈ by the CoinSight Team