A modern cryptocurrency desktop application built with WPF (.NET 8.0), featuring real-time cryptocurrency data, detailed coin analytics, interactive charts, and currency conversion capabilities. The application integrates with the CoinGecko API to provide comprehensive cryptocurrency market information.
- Cryptocurrency Market Data: Real-time display of top cryptocurrencies with current prices, market cap, and 24h changes
- Advanced Search: Search for specific cryptocurrencies with instant results
- Detailed Coin Analytics: Comprehensive coin details including market data, price history, and trading information
- Interactive Charts: Line charts and candlestick charts with multiple timeframe options (1d, 7d, 30d)
- Currency Converter: Convert between different cryptocurrencies with real-time exchange rates
The application integrates with the CoinGecko API - a comprehensive cryptocurrency data API that provides real-time market data, historical prices, and detailed coin information.
API Base URL: https://api.coingecko.com/api/v3
The application utilizes the following CoinGecko API endpoints:
/coins/markets- Get top cryptocurrencies by market cap- Parameters:
vs_currency,order,per_page,page - Used for: Main page cryptocurrency list display
- Parameters:
/coins/{id}- Get detailed information about a specific coin- Parameters:
id(coin identifier) - Used for: Coin details page with comprehensive market data
- Parameters:
/search?query={query}- Search for cryptocurrencies- Parameters:
query(search term) - Used for: Finding specific cryptocurrencies by name or symbol
- Parameters:
/coins/{id}/market_chart- Get historical market data- Parameters:
id,vs_currency,days - Used for: Line charts showing price history over time
- Parameters:
/coins/{id}/ohlc- Get Open/High/Low/Close data- Parameters:
id,vs_currency,days - Used for: Candlestick charts with detailed price movements
- Parameters:
/coins/{id}/tickers- Get trading data from various exchanges- Parameters:
id(coin identifier) - Used for: Exchange trading information and market spread
- Parameters:
/simple/price- Get simple price conversion rates- Parameters:
ids,vs_currencies,precision - Used for: Currency converter functionality
- Parameters:
Important: The CoinGecko API has rate limits of 5-15 calls per minute in the free version, with higher limits available in paid plans.
All price data is provided in USD by default, with support for other fiat currencies through the vs_currency parameter.
Before running this project, ensure you have the following installed:
- Visual Studio 2022 (Community, Professional, or Enterprise)
- .NET desktop development (workload from Visual Studio 2022 Installer; includes WPF)
- Git (for cloning the repository)
- Internet connection (required for CoinGecko API access)
-
Clone the repository
git clone <repository-url> cd CryptoCurR
-
Open the solution in Visual Studio 2022
- Open
CryptoCurR.slnin Visual Studio 2022 - Wait for the solution to load and restore NuGet packages
- Open
-
Verify dependencies
- Ensure all NuGet packages are restored
- Check that the solution builds successfully (Build → Build Solution)
-
Set the startup project
- Right-click on
CryptoCurRin Solution Explorer - Select "Set as Startup Project"
- Right-click on
-
Run the application
- Press
F5or click the "Start" button in Visual Studio - The application will launch as a desktop WPF application
- Press
-
Using the application
- Main Page: View top cryptocurrencies, search, and navigate to other features
- Coin Details: Double-click any coin to view detailed information and charts
- Currency Converter: Click "Currency Converter" button to convert between cryptocurrencies
The project includes comprehensive integration testing with real API calls to CoinGecko, covering all major functionality including market data retrieval, coin details, search functionality, historical charts, OHLC data, and currency conversion. Tests are built using xUnit and Moq frameworks.
- Open Test Explorer in Visual Studio (Test → Test Explorer)
- Build the solution
- Run tests from Test Explorer or use command line:
dotnet test
Note: Due to CoinGecko API rate limits (5-15 calls per minute), running all tests simultaneously may result in some failures. If this occurs, wait 2-3 minutes and re-run failed tests individually.
-
API Rate Limiting
- CoinGecko API has rate limits
- Application includes error handling for rate limit responses
- Consider implementing request throttling for production use
-
Network Connectivity
- Application requires internet connection for API access
- Network status is monitored and reported to users
- Offline mode is not supported
-
Build Errors
- Ensure .NET 8.0 SDK is installed
- Restore NuGet packages
- Clean and rebuild the solution
-
Chart Display Issues
- Verify LiveCharts.Wpf package is properly installed
- Check data format for chart series
- Ensure proper data binding in XAML
If you encounter issues:
- Check the application logs in the
logs/directory - Review the console output for error messages
- Verify all prerequisites are installed correctly
- Ensure stable internet connection for API access
This project is licensed under the terms specified in the LICENSE.txt file.