A complete cryptocurrency tracking application with real-time prices, historical charts, portfolio tracking, and price alerts.
- Real-time Prices: Live cryptocurrency prices with automatic updates
- Interactive Charts: Historical price charts with multiple time ranges
- Portfolio Tracking: Track investments with profit/loss calculations
- Price Alerts: Set custom alerts with browser notifications
- Watchlist: Favorite cryptocurrencies for quick access
- Top Gainers/Losers: See trending coins
- Advanced Sorting: Sort by price, market cap, volume, etc.
- Backend Proxy: Optional backend with intelligent caching
crypto/
βββ frontend/ # React + TypeScript frontend
βββ backend/ # Node.js + Express backend (optional)
βββ README.md # This file
- React 18 + TypeScript
- Vite
- Tailwind CSS
- Recharts
- React Router
- Axios
- Node.js + Express
- TypeScript
- Node-Cache (in-memory caching)
- Express Rate Limit
cd frontend
npm install
npm run devFrontend runs on http://localhost:3000
Note: Without backend, the frontend uses direct CoinGecko API calls with CORS proxy fallback. You may encounter rate limits.
cd backend
npm install
cp .env.example .env
# Edit .env and set FRONTEND_URL=http://localhost:3000
npm run devBackend runs on http://localhost:5000
cd frontend
npm install
echo "VITE_API_URL=http://localhost:5000/api/coingecko" > .env
npm run devFrontend automatically uses backend when available!
- Node.js 18+ and npm
- (Optional) Docker for containerized deployment
cd frontend
npm installcd backend
npm installCreate frontend/.env:
# Backend API URL (optional)
VITE_API_URL=http://localhost:5000/api/coingecko
# CORS Proxy (only used if backend unavailable)
VITE_USE_CORS_PROXY=falseCreate backend/.env:
PORT=5000
FRONTEND_URL=http://localhost:3000
NODE_ENV=development
# Optional: CoinGecko Pro API key for higher rate limits
COINGECKO_API_KEY=your_key_here
# Cache TTLs (seconds)
CACHE_TTL_MARKETS=120
CACHE_TTL_CHART=300
CACHE_TTL_COIN=600cd backend
docker-compose up -dSee SETUP_BACKEND.md for detailed Docker setup.
- Frontend README - Frontend documentation
- Backend README - Backend API documentation
- Backend Setup Guide - Detailed backend setup
- CORS Solution - CORS troubleshooting
- Improvements - Feature list
β
No CORS Issues: All API calls go through backend
β
80-90% Fewer API Calls: Intelligent caching
β
Better Performance: Cached responses are instant
β
Rate Limit Protection: Backend handles rate limiting
β
Scalable: Can add Redis for distributed caching
cd frontend
npm run devcd backend
npm run devFrontend:
cd frontend
npm run buildBackend:
cd backend
npm run build
npm startGET /api/health- Health checkGET /api/coingecko/markets- Market dataGET /api/coingecko/coins/:coinId- Coin detailsGET /api/coingecko/coins/:coinId/market_chart- Chart dataGET /api/coingecko/cache/stats- Cache statistics
If using frontend only:
- Wait 1-2 minutes between requests (rate limits)
- The app automatically tries CORS proxies
- Consider using the backend for production
If using backend:
- Check
FRONTEND_URLin backend.env - Verify backend is running:
curl http://localhost:5000/api/health - Check
VITE_API_URLin frontend.env
- With Backend: Caching reduces API calls significantly
- Without Backend: Wait 1-2 minutes, use retry button
- Consider CoinGecko Pro API key for higher limits
- Verify backend is running
- Check
VITE_API_URLin frontend.env - Frontend automatically falls back to direct API if backend unavailable
- CoinGecko API for cryptocurrency data
- Built with React, Express, and modern web technologies
Happy Tracking! π Done By Sejda Abd