A comprehensive desktop application built with WPF/.NET that displays cryptocurrency exchange data using the Coinlore API. This enhanced version includes advanced features like price alerts, favorites management, data export, and real-time monitoring capabilities.
- Live Exchange Data: Fetch cryptocurrency exchange information from the Coinlore API
- Multiple Exchange Support: View trading pairs from various exchanges with smart filtering
- Robust Parsing: Handles multiple API response formats with fallback mechanisms
- Real-time Updates: Manual refresh via 'LOAD DATA' and last update timestamp
- ๐ Favorites System: Mark and manage favorite trading pairs with persistent storage
- ๐ Price Alerts: Set custom price alerts with above/below target notifications
- ๐ Search & Filter: Real-time search and filtering capabilities
- ๐ Data Export: Export data to CSV format with timestamped files
- โฑ๏ธ Auto-Refresh: Removed from the UI; use 'LOAD DATA' to refresh exchange data
- ๐ Price Indicators: Visual price change indicators (โฒโผ) for trend tracking
- ๐จ Enhanced UI: Larger window, tabbed interface, and improved cyberpunk styling
- ๐ Multi-Tab Layout: Organized content in Trading Pairs, Alerts, and Favorites tabs
- ๐ฏ Smart Controls: Advanced filtering, sorting, and management controls
- โก Responsive Design: Async operations keep the UI responsive during data loading
- ๐พ SQLite Database: Local storage for favorites, alerts, and historical data
- ๐ Historical Tracking: Price history storage for future analytics
- โ๏ธ Settings Storage: Persistent application configuration
- ๐ Data Persistence: All user data saved between sessions
- Windows operating system
- .NET 8.0 or later
- Visual Studio 2022 (recommended) or other .NET IDE
-
Clone the repository:
git clone https://github.com/mars-rift/cryptoview.git -
Open the solution file in Visual Studio:
cryptoview.sln -
Restore NuGet packages:
dotnet restore -
Build and run the application:
- Press F5 in Visual Studio, or
- Use the command line:
dotnet buildfollowed bydotnet run
- Initial Setup: The application automatically loads and filters valid exchanges on startup; Binance is the preferred default when available
- Select Exchange: Choose an exchange from the dropdown menu
- Select Exchange: Choose an exchange from the dropdown to auto-load data
- Load Data: Click "LOAD DATA" to manually refresh data for the currently selected exchange
- Search: Use the search box to filter trading pairs by symbol or name
-
Favorites Management:
- Click the โ button next to any trading pair to add/remove favorites
- Use "Favorites Only" checkbox to filter the view
- Access the Favorites tab to manage your watchlist
-
Price Alerts:
- Click the ๐ button next to any pair to set price alerts
- Configure above/below target price notifications
- Manage alerts in the dedicated Alerts tab
-
Data Export:
- Click "EXPORT" to save current data to CSV format
- Files are automatically timestamped for organization
-
Settings:
- Access application settings via the "SETTINGS" button
- Configure other preferences
- Save Last Selected Exchange: Persist the currently selected exchange between application runs
- MainWindow.xaml / MainWindow.xaml.cs: Enhanced main application UI and logic
- App.xaml / App.xaml.cs: Application configuration and startup
- TradingPair: Enhanced trading pair data with change indicators
- Exchange: Basic exchange information
- ExchangeInfo: Detailed exchange information including name, founding date, and URL
- PriceAlert: Price alert configuration and management
- HistoricalPrice: Historical price data for analytics
- UserSettings: Application settings and preferences
- DataService: Comprehensive data persistence layer with SQLite integration
- PriceAlertWindow: Price alert creation dialog
- SettingsWindow: Application settings interface
- Data Models:
Exchange: Basic exchange informationExchangeInfo: Detailed exchange information including name, founding date, and URLTradingPair: Trading pair data including base/quote currencies, price, volume, and timestampExchangeData: Container for exchange info and pairs with JSON deserialization support
- Framework: WPF with .NET 8.0
- Database: SQLite for local data persistence
- HTTP Client: Async HttpClient for API requests
- JSON Parsing: System.Text.Json with fallback parsing strategies
- Async/Await: All network operations are asynchronous for UI responsiveness
- Error Handling: Comprehensive try/catch blocks with user feedback
- Data Binding: Observable collections for real-time UI updates
- OxyPlot.Wpf: Ready for future charting capabilities
- System.Data.SQLite: Local database functionality
The application uses SQLite to store:
- HistoricalPrices: Price history for analytics
- PriceAlerts: User-configured price alerts
- Favorites: User's favorite trading pairs
- Settings: Application preferences and configuration
- Smart Filtering: Only loads exchanges with valid data
- Caching: Intelligent data caching to reduce API calls
- Background Processing: Non-blocking operations for smooth UI
- Memory Management: Proper disposal patterns and resource cleanup
The application uses the Coinlore API:
- Exchange List:
https://api.coinlore.net/api/exchanges/ - Exchange Details:
https://api.coinlore.net/api/exchange/?id={exchangeId}
- Built-in delays between API calls to respect rate limits
- Graceful handling of API errors and timeouts
- Automatic retry mechanisms for failed requests
The application features a cyberpunk-inspired theme with:
- Dark Background: Professional dark theme (#0F0F17)
- Neon Accents: Green (#00FF9C) and cyan (#00FFFF) highlights
- Custom Controls: Styled buttons, dropdowns, and data grids
- Typography: Consolas font for technical aesthetics
The modular architecture supports easy addition of:
- Additional exchange APIs
- New alert types and conditions
- Enhanced charting and visualization
- Portfolio tracking features
- Multiple UI themes
- ๐ Historical Charts: Interactive price charts with OxyPlot
- ๐ Advanced Alerts: Volume, percentage change, and technical indicators
- ๐ Portfolio Tracking: Multi-exchange portfolio management
- ๐ Multi-API Support: Integration with additional crypto APIs
- ๐ฑ Cross-Platform: Avalonia UI version for Linux/macOS
- โ๏ธ Cloud Sync: Optional cloud synchronization of user data
- Single exchange selection (architecture supports multi-exchange)
- Basic alert system (ready for advanced trigger types)
- Settings panel placeholder (framework implemented)
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Follow the existing code style and patterns
- Add appropriate unit tests for new features
- Update documentation as needed
- Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Use async/await for all I/O operations
- Follow MVVM patterns where applicable
- Implement proper error handling and user feedback
- Add XML documentation for public APIs
- Maintain the existing cyberpunk UI aesthetic
- Test with multiple exchanges and data formats
- Verify database operations and data persistence
- Check UI responsiveness during long operations
- Validate error handling with network failures
This project is licensed under the MIT License - see the LICENSE file for details.
- Coinlore API for providing cryptocurrency exchange data
