CryptoVista is a comprehensive cryptocurrency analytics platform designed for traders, investors, and crypto enthusiasts. It provides real-time market data, professional-grade charts, and advanced analytics tools to help users make informed decisions in the volatile crypto market.
- Traders: Real-time price monitoring and technical analysis
- Investors: Portfolio tracking and market overview
- Developers: Learning modern web development with crypto APIs
- Crypto Enthusiasts: Staying updated with market trends
- π΄ Real-Time Data: WebSocket connection to Binance for instant price updates
- π Professional Charts: Interactive candlestick charts with lightweight-charts v5
- π° Multiple Cryptocurrencies: Support for BTC, ETH, SOL with instant switching
- π Market Overview: Global market stats, top gainers/losers, and comprehensive market data
- π Advanced Analytics: Multi-chart dashboard with customizable layouts
- π Compare Mode: Side-by-side price evolution comparison
- π± Watchlist Management: Create and manage custom cryptocurrency watchlists
- π¨ Modern UI: Dark theme with professional design and smooth animations
- β‘ Ultra Fast: Next.js 15 with Turbopack for instant development
- π Smart Reconnection: Exponential backoff for reliable WebSocket connections
- π± Fully Responsive: Perfect experience on desktop and mobile devices
| Technology | Version | Purpose |
|---|---|---|
| Next.js | 15.5.4 | React framework with SSR/SSG |
| TypeScript | 5.0 | Static typing and better DX |
| Tailwind CSS | 4.0 | Utility-first CSS framework |
| Zustand | 5.0.8 | Lightweight state management |
| lightweight-charts | 5.0.9 | Professional financial charts |
| Binance API | REST + WS | Free market data |
| CoinGecko API | REST | Global market statistics |
src/
βββ app/ # Next.js App Router
β βββ analytics/ # Multi-chart analytics dashboard
β βββ market-overview/ # Global market overview
β βββ compare/ # Price comparison tool
β βββ layout.tsx # Main application layout
β βββ page.tsx # Landing page
βββ components/ # React components
β βββ layout/ # Layout components
β β βββ AppLayout.tsx # Main app wrapper
β β βββ Navbar.tsx # Navigation bar
β β βββ Sidebar.tsx # Collapsible sidebar
β βββ analytics/ # Analytics components
β β βββ ChartCard.tsx # Individual chart component
β β βββ GridLayout.tsx # Chart grid layout
β β βββ LayoutControls.tsx # Layout customization
β βββ watchlist/ # Watchlist management
β β βββ WatchlistGroup.tsx # Watchlist container
β β βββ WatchlistItem.tsx # Individual watchlist item
β β βββ AddWatchlistModal.tsx # Create new watchlist
β β βββ AddTokenModal.tsx # Add tokens to watchlist
β βββ Chart.tsx # Main candlestick chart
β βββ PriceTicker.tsx # Price display component
β βββ ConnectionStatus.tsx # WebSocket status indicator
β βββ SymbolSelector.tsx # Cryptocurrency selector
βββ hooks/ # Custom React hooks
β βββ useBinanceWebSocket.ts # WebSocket data management
β βββ useBinanceTicker.ts # 24hr ticker data
β βββ useBinanceChart.ts # Historical chart data
βββ store/ # Zustand state management
β βββ marketStore.ts # Main market data
β βββ tickerStore.ts # 24hr ticker data
β βββ watchlistStore.ts # Watchlist management
β βββ uiStore.ts # UI state management
βββ types/ # TypeScript definitions
β βββ market.ts # Market data interfaces
β βββ ticker.ts # Ticker data interfaces
β βββ watchlist.ts # Watchlist interfaces
βββ utils/ # Utility functions
βββ symbolMapper.ts # Symbol mapping utilities
βββ coingecko.ts # CoinGecko API utilities
graph TD
A[Binance WebSocket] --> B[useBinanceWebSocket Hook]
B --> C[Zustand Store]
C --> D[React Components]
E[Binance REST API] --> F[Historical Data]
F --> C
G[CoinGecko API] --> H[Global Market Data]
H --> I[Market Overview]
C --> J[Chart Component]
C --> K[PriceTicker]
C --> L[Watchlist Items]
C --> M[ConnectionStatus]
# Clone the repository
git clone https://github.com/Vicent00/crypto-tracker.git
cd crypto-tracker
# Install dependencies
npm install
# Start development server
npm run devOpen http://localhost:3000 in your browser π
# Development with Turbopack (ultra fast)
npm run dev
# Production build
npm run build
# Production server
npm start
# Linting and type checking
npm run lint
npx tsc --noEmit- URL:
wss://stream.binance.com:9443/stream - Streams:
{symbol}@tradeand{symbol}@kline_1m - Data: Real-time prices, trades, and candlesticks
- Endpoint:
https://api.binance.com/api/v3/klines - Parameters:
symbol,interval=1m,limit=500 - Data: 500 historical candlesticks (8+ hours)
- Endpoint:
https://api.coingecko.com/api/v3 - Data: Global market statistics, top cryptocurrencies
- Rate Limit: 10-50 calls/minute (free tier)
- Professional candlestick charts with lightweight-charts
- Zoom, pan, and interactive tools
- Custom color schemes (green/red)
- Responsive and optimized for performance
- Large price display with animations
- Color-coded price change indicators
- Automatic currency formatting
- Real-time updates
- Global cryptocurrency market statistics
- Top gainers and losers
- Sortable market cap table
- Real-time data updates every 60 seconds
- Multi-chart layout with customizable grids
- Individual chart management
- Real-time WebSocket connections per chart
- Professional trading interface
- Create custom cryptocurrency watchlists
- Add/remove tokens dynamically
- Real-time price tracking
- Persistent storage with localStorage
No API keys required. The project uses public endpoints from Binance and CoinGecko.
- Symbols: Modify supported cryptocurrencies in components
- Colors: Adjust color palette in
tailwind.config.js - Limits: Change data limits in store configurations
- Intervals: Modify chart update frequencies
# Install Vercel CLI
npm i -g vercel
# Deploy
vercelFROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]- Zustand: Lightweight state management
- Modular Stores: Separate stores for different data types
- TypeScript: Full type safety throughout the application
- Next.js 15: Latest framework with Turbopack
- Image Optimization: Next.js Image component
- Code Splitting: Automatic route-based splitting
- WebSocket Efficiency: Smart reconnection and data management
- TypeScript: Full type safety
- ESLint: Code quality enforcement
- Hot Reload: Instant development feedback
- Responsive Design: Mobile-first approach
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License. See LICENSE for more details.
- Binance for the free API
- CoinGecko for market data
- TradingView for inspiration
- lightweight-charts for the charts
- Vercel for hosting
Built with β€οΈ by Vicente Aguilar