| # π€ HuggingFace Spaces Deployment Guide | |
| This guide explains how to deploy the Crypto API Monitoring System to HuggingFace Spaces. | |
| ## Overview | |
| The application is fully optimized for HuggingFace Spaces deployment with: | |
| - **Docker-based deployment** using the standard HF Spaces port (7860) | |
| - **Automatic environment detection** for frontend API calls | |
| - **HuggingFace ML integration** for crypto sentiment analysis | |
| - **WebSocket support** for real-time data streaming | |
| - **Persistent data storage** with SQLite | |
| ## Prerequisites | |
| 1. A HuggingFace account ([sign up here](https://huggingface.co/join)) | |
| 2. Git installed on your local machine | |
| 3. Basic familiarity with Docker and HuggingFace Spaces | |
| ## Deployment Steps | |
| ### 1. Create a New Space | |
| 1. Go to [HuggingFace Spaces](https://huggingface.co/spaces) | |
| 2. Click "Create new Space" | |
| 3. Configure your Space: | |
| - **Name**: `Datasourceforcryptocurrency` (or your preferred name) | |
| - **License**: Choose appropriate license (e.g., MIT) | |
| - **SDK**: Select **Docker** | |
| - **Visibility**: Public or Private (your choice) | |
| 4. Click "Create Space" | |
| ### 2. Clone Your Space Repository | |
| ```bash | |
| # Clone your newly created space | |
| git clone https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME | |
| cd YOUR_SPACE_NAME | |
| ``` | |
| ### 3. Copy Application Files | |
| Copy all files from this repository to your Space directory: | |
| ```bash | |
| # Copy all files (adjust paths as needed) | |
| cp -r /path/to/crypto-dt-source/* . | |
| ``` | |
| **Essential files for HuggingFace Spaces:** | |
| - `Dockerfile` - Docker configuration optimized for HF Spaces | |
| - `requirements.txt` - Python dependencies including transformers | |
| - `app.py` - Main FastAPI application | |
| - `config.js` - Frontend configuration with environment detection | |
| - `*.html` - UI files (index.html, hf_console.html, etc.) | |
| - All backend directories (`api/`, `backend/`, `monitoring/`, etc.) | |
| ### 4. Configure Environment Variables (Optional but Recommended) | |
| In your HuggingFace Space settings, add these secrets: | |
| **Required:** | |
| - `HUGGINGFACE_TOKEN` - Your HF token for accessing models (optional if using public models) | |
| **Optional API Keys (for enhanced data collection):** | |
| - `ETHERSCAN_KEY_1` - Etherscan API key | |
| - `COINMARKETCAP_KEY_1` - CoinMarketCap API key | |
| - `NEWSAPI_KEY` - NewsAPI key | |
| - `CRYPTOCOMPARE_KEY` - CryptoCompare API key | |
| **HuggingFace Configuration:** | |
| - `ENABLE_SENTIMENT=true` - Enable sentiment analysis | |
| - `SENTIMENT_SOCIAL_MODEL=ElKulako/cryptobert` - Social sentiment model | |
| - `SENTIMENT_NEWS_MODEL=kk08/CryptoBERT` - News sentiment model | |
| - `HF_REGISTRY_REFRESH_SEC=21600` - Registry refresh interval (6 hours) | |
| ### 5. Push to HuggingFace | |
| ```bash | |
| # Add all files | |
| git add . | |
| # Commit changes | |
| git commit -m "Initial deployment of Crypto API Monitor" | |
| # Push to HuggingFace | |
| git push | |
| ``` | |
| ### 6. Wait for Build | |
| HuggingFace Spaces will automatically: | |
| 1. Build your Docker image (takes 5-10 minutes) | |
| 2. Download required ML models | |
| 3. Start the application on port 7860 | |
| 4. Run health checks | |
| Monitor the build logs in your Space's "Logs" tab. | |
| ### 7. Access Your Application | |
| Once deployed, your application will be available at: | |
| ``` | |
| https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME | |
| ``` | |
| ## Features Available in HuggingFace Spaces | |
| ### π― Real-Time Dashboard | |
| - Access the main dashboard at the root URL | |
| - Real-time WebSocket updates for all metrics | |
| - Provider health monitoring | |
| - System status and analytics | |
| ### π€ HuggingFace Console | |
| - Access at `/hf_console.html` | |
| - Test HF model registry | |
| - Run sentiment analysis | |
| - Search crypto-related models and datasets | |
| ### π API Documentation | |
| - Swagger UI: `/docs` | |
| - ReDoc: `/redoc` | |
| - API Info: `/api-info` | |
| ### π WebSocket Endpoints | |
| All WebSocket endpoints are available for real-time data: | |
| - `/ws` - Master WebSocket endpoint | |
| - `/ws/market_data` - Market data updates | |
| - `/ws/news` - News updates | |
| - `/ws/sentiment` - Sentiment analysis updates | |
| - `/ws/health` - Health monitoring | |
| - `/ws/huggingface` - HF integration updates | |
| ## Local Development & Testing | |
| ### Using Docker Compose | |
| ```bash | |
| # Build and start the application | |
| docker-compose up --build | |
| # Access at http://localhost:7860 | |
| ``` | |
| ### Using Docker Directly | |
| ```bash | |
| # Build the image | |
| docker build -t crypto-api-monitor . | |
| # Run the container | |
| docker run -p 7860:7860 \ | |
| -e HUGGINGFACE_TOKEN=your_token \ | |
| -e ENABLE_SENTIMENT=true \ | |
| -v $(pwd)/data:/app/data \ | |
| crypto-api-monitor | |
| ``` | |
| ### Using Python Directly | |
| ```bash | |
| # Install dependencies | |
| pip install -r requirements.txt | |
| # Set environment variables | |
| export ENABLE_SENTIMENT=true | |
| export HUGGINGFACE_TOKEN=your_token | |
| # Run the application | |
| python app.py | |
| ``` | |
| ## Configuration | |
| ### Frontend Configuration (`config.js`) | |
| The frontend automatically detects the environment: | |
| - **HuggingFace Spaces**: Uses relative URLs with Space origin | |
| - **Localhost**: Uses `http://localhost:7860` | |
| - **Custom Deployment**: Uses current window origin | |
| No manual configuration needed! | |
| ### Backend Configuration | |
| Edit `.env` or set environment variables: | |
| ```bash | |
| # HuggingFace | |
| HUGGINGFACE_TOKEN=your_token_here | |
| ENABLE_SENTIMENT=true | |
| SENTIMENT_SOCIAL_MODEL=ElKulako/cryptobert | |
| SENTIMENT_NEWS_MODEL=kk08/CryptoBERT | |
| HF_REGISTRY_REFRESH_SEC=21600 | |
| HF_HTTP_TIMEOUT=8.0 | |
| # API Keys (optional) | |
| ETHERSCAN_KEY_1=your_key | |
| COINMARKETCAP_KEY_1=your_key | |
| NEWSAPI_KEY=your_key | |
| ``` | |
| ## Architecture | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β HuggingFace Spaces (Docker) β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββ€ | |
| β β | |
| β Frontend (HTML/JS) β | |
| β βββ config.js (auto-detects environment) β | |
| β βββ index.html (main dashboard) β | |
| β βββ hf_console.html (HF integration UI) β | |
| β β | |
| β Backend (FastAPI) β | |
| β βββ app.py (main application) β | |
| β βββ WebSocket Manager (real-time updates) β | |
| β βββ HF Integration (sentiment analysis) β | |
| β βββ Data Collectors (200+ APIs) β | |
| β βββ SQLite Database (persistent storage) β | |
| β β | |
| β ML Models (HuggingFace Transformers) β | |
| β βββ ElKulako/cryptobert β | |
| β βββ kk08/CryptoBERT β | |
| β β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ``` | |
| ## Troubleshooting | |
| ### Build Fails | |
| 1. Check Docker logs in HF Spaces | |
| 2. Verify `requirements.txt` has all dependencies | |
| 3. Ensure Dockerfile uses Python 3.10 | |
| 4. Check for syntax errors in Python files | |
| ### Application Won't Start | |
| 1. Check health endpoint: `https://your-space-url/health` | |
| 2. Review application logs in HF Spaces | |
| 3. Verify port 7860 is exposed in Dockerfile | |
| 4. Check environment variables are set correctly | |
| ### WebSocket Connections Fail | |
| 1. Ensure your Space URL uses HTTPS | |
| 2. WebSockets automatically upgrade to WSS on HTTPS | |
| 3. Check browser console for connection errors | |
| 4. Verify CORS settings in `app.py` | |
| ### Sentiment Analysis Not Working | |
| 1. Set `HUGGINGFACE_TOKEN` in Space secrets | |
| 2. Verify models are accessible: `ElKulako/cryptobert`, `kk08/CryptoBERT` | |
| 3. Check HF console at `/hf_console.html` | |
| 4. Review logs for model download errors | |
| ### Performance Issues | |
| 1. Increase Space hardware tier (if available) | |
| 2. Reduce number of concurrent API monitors | |
| 3. Adjust `HF_REGISTRY_REFRESH_SEC` to longer interval | |
| 4. Consider disabling sentiment analysis if not needed | |
| ## Resource Requirements | |
| **Minimum (Free Tier):** | |
| - 2 CPU cores | |
| - 2GB RAM | |
| - 1GB disk space | |
| **Recommended:** | |
| - 4 CPU cores | |
| - 4GB RAM | |
| - 2GB disk space | |
| - For better ML model performance | |
| ## Updating Your Space | |
| ```bash | |
| # Pull latest changes | |
| git pull | |
| # Make your modifications | |
| # ... | |
| # Commit and push | |
| git add . | |
| git commit -m "Update: description of changes" | |
| git push | |
| ``` | |
| HuggingFace will automatically rebuild and redeploy. | |
| ## Security Best Practices | |
| 1. **Use HF Secrets** for sensitive data (API keys, tokens) | |
| 2. **Don't commit** `.env` files with actual keys | |
| 3. **Review API keys** permissions (read-only when possible) | |
| 4. **Monitor usage** of external APIs to avoid rate limits | |
| 5. **Keep dependencies updated** for security patches | |
| ## Advanced Configuration | |
| ### Custom ML Models | |
| To use custom sentiment analysis models: | |
| ```bash | |
| # Set environment variables in HF Spaces | |
| SENTIMENT_SOCIAL_MODEL=your-username/your-model | |
| SENTIMENT_NEWS_MODEL=your-username/another-model | |
| ``` | |
| ### Custom Port (Not Recommended for HF Spaces) | |
| HuggingFace Spaces requires port 7860. Don't change unless deploying elsewhere. | |
| ### Multiple Workers | |
| Edit Dockerfile CMD: | |
| ```dockerfile | |
| CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860", "--workers", "2"] | |
| ``` | |
| **Note**: More workers = more memory usage. Adjust based on Space tier. | |
| ## Support & Resources | |
| - **HuggingFace Docs**: https://huggingface.co/docs/hub/spaces | |
| - **FastAPI Docs**: https://fastapi.tiangolo.com/ | |
| - **Transformers Docs**: https://huggingface.co/docs/transformers/ | |
| - **Project Issues**: https://github.com/nimazasinich/crypto-dt-source/issues | |
| ## License | |
| [Specify your license here] | |
| ## Contributing | |
| Contributions are welcome! Please read the contributing guidelines before submitting PRs. | |
| --- | |
| **Need help?** Open an issue or contact the maintainers. | |
| **Enjoy your crypto monitoring dashboard on HuggingFace Spaces! π** | |