A production-ready cryptocurrency alert system with real-time price monitoring, browser notifications, and professional UI. Built with React + LunarCrush API for modern portfolio demonstration.
Perfect for demonstrating modern frontend and real-time system skills:
- π Real-Time Alerts: Browser notifications with 11 alert types
- π Live Crypto Data: Bitcoin and Ethereum market metrics via LunarCrush API
- π¨ Professional UI: Mantine 8.2.1 with glassmorphism design and dark theme
- π± Mobile-First: Responsive design optimized for all devices
- β‘ Performance: Zustand + React Query for optimal state management
- ποΈ Production-Ready: Professional dependency management and error handling
Try it now: Crypto Alert System
Features to test:
- View live Bitcoin and Ethereum metrics
- Create price alerts with browser notifications
- Experience professional glassmorphism UI
- Test mobile responsive design
- React 18 - Modern hooks and concurrent features
- Vite 5 - Lightning-fast development and optimized builds
- Mantine 8.2.1 - Professional component library with consistent theming
- Zustand 4.4.7 - Lightweight state management with persistence
- LunarCrush API - Real-time cryptocurrency and social sentiment data
- React Query 5 - Smart data fetching with caching and background updates
- Cloudflare Workers - Serverless backend with global edge deployment
- Tabler Icons - Comprehensive icon system
- Recharts - Professional data visualization
- Browser Notifications - Native OS integration
- Glassmorphism - Modern backdrop blur effects
- Live Bitcoin, Ethereum, and cryptocurrency prices
- 30-second polling with pause/resume functionality
- Connection status monitoring with automatic reconnection
- 11 Alert Types: Price thresholds, volume spikes, sentiment changes
- Browser Notifications: Native OS notifications with sound
- Persistent Storage: Alerts survive browser restarts
- Real-time Monitoring: Continuous price comparison with smart triggering
- Live Price Cards: Bitcoin and Ethereum with 24h changes
- Market Metrics: Volume, market cap, percentage changes
- Alert Management: Create, view, disable, and delete alerts
- Error Recovery: Production-ready error boundaries and user feedback
- Glassmorphism Design: Backdrop blur effects and gradient backgrounds
- Dark Theme: Cohesive professional dark mode throughout
- Mobile Responsive: Touch-optimized for all device sizes
- Smooth Animations: Loading states, transitions, and micro-interactions
ββ Frontend (React + Vite) ββββ ββ Real-Time Data ββ
β β β β
β HeroSection βββββΊβ LunarCrush API β
β ββ Live Bitcoin Price β β Crypto Data β
β ββ Ethereum Updates β β β
β ββ Alert Counter β ββββββββββββββββββββ
β β β²
β DashboardGrid β β
β ββ Crypto Cards β β
β ββ Real-time Updates β β
β ββ Connection Status β β
β β β
β AlertModal β β
β ββ 11 Alert Types β β
β ββ Notification Setup β β
β ββ Persistent Storage β β
β β β
βββββββββββββββ¬ββββββββββββββββ β
β β
βΌ β
ββ State Management (Zustand) β β
β β β
β useCryptoStore ββββββββββββββββ
β ββ Real-time Data β
β ββ Connection Status β
β ββ Error Handling β
β β
β useAlertStore β
β ββ Alert Management β
β ββ Browser Notifications β
β ββ Local Storage β
β β
βββββββββββββββββββββββββββββββ- Node.js 18+
- Modern browser with notification support
- Basic React knowledge
# Clone the repository
git clone https://github.com/danilobatson/crypto-alert-system.git
cd crypto-alert-system
# Install dependencies
npm install
# Start development server
npm run dev
# Open browser
open http://localhost:3000# .env.local (Demo configuration included)
VITE_API_BASE_URL=https://cryptoguard-api.cryptoguard-api.workers.dev
VITE_API_KEY=demo_tutorial_001
VITE_MODE=production# Build for production
npm run build
# Preview production build
npm run previewcrypto-alert-system/
βββ π README.md
βββ π¦ package.json
βββ βοΈ vite.config.js
βββ π .env.local
β
βββ π src/
β βββ π App.jsx # Main application component
β β
β βββ π components/
β β βββ π layout/
β β β βββ π― HeroSection.jsx # Professional hero with live prices
β β β βββ π¦Ά Footer.jsx # App footer with credits
β β β
β β βββ π dashboard/
β β β βββ π DashboardGrid.jsx # Main crypto dashboard
β β β βββ π° CryptoCard.jsx # Individual crypto price cards
β β β
β β βββ π alerts/
β β β βββ π¨ AlertModal.jsx # Alert creation modal
β β β βββ π AlertsList.jsx # Alert management interface
β β β βββ π AlertForm.jsx # Alert configuration form
β β β
β β βββ π ui/
β β βββ π’ NotificationBanner.jsx
β β βββ π‘οΈ ErrorBoundary.jsx
β β
β βββ π stores/
β β βββ π useCryptoStore.js # Cryptocurrency data state
β β βββ π¨ useAlertStore.js # Alert system state
β β
β βββ π hooks/
β β βββ π useCryptoData.js # Real-time data fetching
β β βββ π useNotifications.js # Browser notification handling
β β βββ β‘ useAlertInitialization.js # Alert persistence
β β
β βββ π api/
β βββ π cryptoApi.js # LunarCrush API integration
β
βββ π public/
βββ πΌοΈ favicon.ico
βββ π index.html// Alert configuration with 11 types
const alertTypes = {
'price_above': 'Price Above Threshold',
'price_below': 'Price Below Threshold',
'volume_spike': 'Volume Spike Alert',
'sentiment_high': 'Positive Sentiment',
'sentiment_low': 'Negative Sentiment',
'galaxy_score': 'Galaxy Score Alert',
'altrank_rising': 'AltRank Rising',
'market_cap': 'Market Cap Threshold',
'social_volume': 'Social Volume Spike',
'price_change': 'Price Change Alert',
'custom': 'Custom Conditions'
};// Native browser notification system
const triggerNotification = (alert, currentPrice) => {
if (Notification.permission === 'granted') {
new Notification(`π¨ ${alert.title}`, {
body: `${alert.symbol.toUpperCase()} hit $${currentPrice.toLocaleString()}`,
icon: '/favicon.ico',
tag: `alert-${alert.id}`
});
}
};// Zustand store with React Query integration
const useCryptoStore = create((set, get) => ({
cryptoData: {},
isPolling: true,
connectionStatus: 'connected',
updateCryptoData: (data) => set(state => ({
cryptoData: { ...state.cryptoData, ...data }
})),
togglePolling: () => set(state => ({
isPolling: !state.isPolling
}))
}));# Already deployed at:
# https://crypto-alert-system.pages.dev/
# Deployment configuration:
Framework: Vite
Build command: npm run build
Output directory: dist
Node.js version: 18VITE_API_BASE_URL=https://cryptoguard-api.cryptoguard-api.workers.dev
VITE_API_KEY=demo_tutorial_001
VITE_MODE=production- Vercel: One-click deployment with GitHub integration
- Netlify: Drag-and-drop build folder deployment
- Railway: Full-stack deployment with environment variables
- β Real-Time Systems: 30-second polling with connection management
- β State Management: Complex Zustand + React Query architecture
- β Browser APIs: Native notification integration with permission handling
- β Error Recovery: Production-ready error boundaries and user feedback
- β Responsive Design: Mobile-first approach with glassmorphism effects
- β Dependency Management: Professional Mantine 8.2.1 upgrade and resolution
- π― Real-World Application: Solves actual cryptocurrency monitoring needs
- π Financial Data: Integration with live market data and social sentiment
- π User Engagement: Browser notifications increase user retention
- π± Mobile Experience: Touch-optimized for mobile crypto traders
- β‘ Performance: Optimized bundle size and loading times
- Real-time Data: Implemented polling strategy with pause/resume functionality
- State Management: Chose Zustand over Redux for performance and simplicity
- Error Handling: Comprehensive error boundaries with user-friendly recovery
- Performance: Bundle optimization and efficient re-rendering strategies
- User Experience: Progressive enhancement with notification permissions
# Live Demo Testing
β
Visit: https://crypto-alert-system.pages.dev/
β
Verify Bitcoin price shows ~$119,000+
β
Create a price alert above current price
β
Enable browser notifications
β
Test mobile responsive design
β
Verify connection status indicator
β
Test auto-refresh toggle functionality# Local development testing
npm run dev
# Production build testing
npm run build
npm run previewContributions are welcome! Please feel free to submit a Pull Request.
- 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 the LICENSE file for details.
- LunarCrush - Real-time cryptocurrency and social sentiment data
- Mantine - Professional React component library
- Tabler Icons - Comprehensive icon system
- Cloudflare Pages - Global deployment and edge optimization
Danilo Jamaal - Software Engineer π§ djbatson19@gmail.com π LinkedIn π Portfolio
β Star this repo if you found it helpful!
π Ready to build your own? Fork this repository and deploy to Cloudflare Pages in minutes!