Datasourceforcryptocurrency / archive /docs /APP_DEPLOYMENT_GUIDE.md
Really-amin's picture
Upload 295 files
d6d843f verified
# Crypto Admin Dashboard - Deployment Guide
## Overview
This is a **REAL-DATA-ONLY** Gradio admin dashboard for the Crypto Data Aggregator platform. It provides comprehensive monitoring and management capabilities through a clean web interface.
## Features
### 7 Main Tabs
1. **πŸ“Š Status** - System health overview, database stats, quick diagnostics
2. **πŸ”Œ Providers** - API provider management with filtering and reload
3. **πŸ“ˆ Market Data** - Live cryptocurrency prices, charts, and market data
4. **πŸ” APL Scanner** - Auto Provider Loader for discovering and validating providers
5. **πŸ€– HF Models** - HuggingFace model status and testing interface
6. **πŸ”§ Diagnostics** - Full system diagnostics with auto-repair capabilities
7. **πŸ“‹ Logs** - System logs viewer with filtering
### Key Principles
- **NO MOCK DATA**: All data comes from real sources (database, APIs, files)
- **Real-time**: Live updates from actual collectors and services
- **Error Handling**: Graceful degradation with clear error messages
- **HuggingFace Ready**: Designed to run as a Gradio Space
## Installation
### Local Setup
```bash
# 1. Install dependencies
pip install -r requirements.txt
# 2. Ensure database is initialized
python -c "import database; db = database.get_database()"
# 3. Run the app
python app.py
```
The dashboard will be available at: `http://localhost:7860`
### HuggingFace Space Deployment
1. Create a new Space on HuggingFace
2. Choose **Space SDK**: Gradio
3. Upload all necessary files:
- `app.py` (main entrypoint)
- `config.py`
- `database.py`
- `collectors.py`
- `ai_models.py`
- `auto_provider_loader.py`
- `provider_validator.py`
- `requirements.txt`
- `providers_config_extended.json`
- Backend services (if needed)
4. HuggingFace will automatically detect `app.py` and launch the Gradio app
## Data Sources
### Tab 1: Status
- **Database**: `db.get_database_stats()` - real-time DB metrics
- **Providers**: `providers_config_extended.json` - actual provider count
- **Market**: `db.get_latest_prices(3)` - live top 3 coins
### Tab 2: Providers
- **Source**: `providers_config_extended.json`
- **Categories**: Dynamically extracted from provider configs
- **Operations**: Real file reload, category filtering
### Tab 3: Market Data
- **Prices**: `db.get_latest_prices(100)` - real database records
- **Refresh**: `collectors.collect_price_data()` - live API calls to CoinGecko/CoinCap
- **Charts**: `db.get_price_history(symbol, hours)` - historical data from DB
- **Plotly**: Interactive charts with real price data
### Tab 4: APL Scanner
- **Scan**: `auto_provider_loader.AutoProviderLoader().run()` - actual APL execution
- **Results**: Real validation results from HTTP providers and HF models
- **Report**: Reads actual `PROVIDER_AUTO_DISCOVERY_REPORT.md`
### Tab 5: HF Models
- **Status**: `ai_models.get_model_info()` - real model loading status
- **Test**: `ai_models.analyze_sentiment()`, `ai_models.summarize_text()` - actual HF inference
- **Initialize**: `ai_models.initialize_models()` - loads real transformers models
### Tab 6: Diagnostics
- **Run**: `backend.services.diagnostics_service.DiagnosticsService().run_full_diagnostics()`
- **Checks**: Real dependency checks, network tests, file system validation
- **Auto-fix**: Actually installs packages, creates directories
### Tab 7: Logs
- **Source**: `config.LOG_FILE` - actual log file
- **Filters**: Real-time filtering of ERROR/WARNING/INFO
- **Clear**: Actually clears log file (with backup)
## Testing Checklist
### βœ… Pre-Flight Checks
```bash
# 1. Verify Python version
python --version # Should be 3.10+
# 2. Install dependencies
pip install -r requirements.txt
# 3. Check database exists
ls -lh data/database/crypto_aggregator.db
# 4. Check config files
ls -lh providers_config_extended.json
ls -lh config.py
```
### βœ… Tab-by-Tab Testing
#### Tab 1: Status
- [ ] Click "Refresh Status" - should show real DB stats
- [ ] Click "Run Quick Diagnostics" - should show actual issues (if any)
- [ ] Verify market snapshot shows real BTC/ETH/BNB prices (if available)
- [ ] Check database stats JSON shows actual record counts
#### Tab 2: Providers
- [ ] View providers table - should load from JSON file
- [ ] Change category filter - should filter providers
- [ ] Click "Reload Providers" - should show success message
- [ ] Verify provider count matches file
#### Tab 3: Market Data
- [ ] View market data table - should show real prices from DB
- [ ] Enter search term (e.g., "Bitcoin") - should filter results
- [ ] Click "Refresh Prices" - should collect new data from APIs
- [ ] Enter symbol "BTC" and click "Plot" - should show price chart (if Plotly installed)
- [ ] Verify no mock/hardcoded data
#### Tab 4: APL Scanner
- [ ] View last report - should show previous scan or "no report"
- [ ] Click "Run APL Scan" - **WARNING: This runs a full scan**
- Should validate HTTP providers
- Should check HF models
- Should update `providers_config_extended.json`
- [ ] Click "View Last Report" - should show markdown report
#### Tab 5: HF Models
- [ ] View models table - should show configured models
- [ ] Click "Initialize Models" - should load transformers (if installed)
- [ ] Select "sentiment", enter text "Bitcoin is great!", click "Run Test"
- Should show real sentiment analysis results
- [ ] Try "summarization" with longer text
#### Tab 6: Diagnostics
- [ ] Click "Run Diagnostics" - should check:
- Dependencies (Python packages)
- Configuration (env vars, files)
- Network (API connectivity)
- Services (provider status)
- Models (HF model availability)
- Filesystem (directories, files)
- [ ] Click "Run with Auto-Fix" - **WARNING: May install packages**
- Should attempt to fix issues automatically
#### Tab 7: Logs
- [ ] Select "recent" - should show last 100 log lines
- [ ] Select "errors" - should show only ERROR lines
- [ ] Click "Refresh Logs" - should update display
- [ ] Click "Clear Logs" - **WARNING: Clears log file**
- Should create backup first
### βœ… Error Handling Tests
```python
# Test with no data
# 1. Empty database
python -c "import database; db = database.get_database(); import os; os.remove(str(db.db_path))"
# 2. Run app - should show "No data available" messages, not crash
# Test with missing config
# 1. Rename providers config
mv providers_config_extended.json providers_config_extended.json.bak
# 2. Run app - should show error messages, not crash
# Test with no internet
# 1. Disconnect network
# 2. Click "Refresh Prices" - should show connection errors, not crash
```
## Configuration
### Environment Variables
Optional environment variables for enhanced functionality:
```bash
# HuggingFace API token (for model access)
export HF_TOKEN="your_hf_token_here"
# API keys (optional)
export CMC_API_KEY="your_coinmarketcap_key"
export ETHERSCAN_KEY="your_etherscan_key"
```
### Config.py Settings
Key settings in `config.py`:
```python
LOG_LEVEL = "INFO" # DEBUG, INFO, WARNING, ERROR
AUTO_REFRESH_INTERVAL = 30 # seconds
GRADIO_SERVER_NAME = "0.0.0.0"
GRADIO_SERVER_PORT = 7860
```
## Troubleshooting
### Issue: "gradio not installed"
```bash
pip install gradio
```
### Issue: "No market data available"
```bash
# Collect initial data
python -c "import collectors; collectors.collect_price_data()"
```
### Issue: "Plotly not available"
```bash
pip install plotly
# Charts will work after restart
```
### Issue: "Transformers not available"
```bash
pip install transformers torch
# HF model features will work after restart
```
### Issue: "Log file not found"
```bash
# Ensure logs directory exists
mkdir -p logs
# Run any collector to create log
python -c "import collectors; collectors.collect_price_data()"
```
## Performance Notes
- **Initial Load**: First load may be slow as models initialize
- **APL Scan**: Can take 30-60 seconds to validate all providers
- **Diagnostics**: Full scan takes ~5-10 seconds
- **Charts**: Rendering large datasets may take a few seconds
## Security Notes
- **Database Queries**: Only SELECT queries allowed in DB Explorer
- **Log Clearing**: Creates backup before clearing
- **Auto-Fix**: Only installs packages and creates directories
- **No Shell Access**: No direct shell command execution
## Development
### Adding New Tabs
```python
with gr.Tab("πŸ†• New Tab"):
gr.Markdown("### New Feature")
# Your components here
output = gr.Markdown()
def new_function():
# MUST use real data only
return "Real data result"
demo.load(
fn=new_function,
outputs=output
)
```
### Adding New Data Sources
1. Add function to fetch real data (no mock data!)
2. Wire function to Gradio component
3. Add error handling
4. Test with missing/unavailable data
## License
Part of the Crypto Data Aggregator project.
---
**Last Updated**: 2025-11-16
**Version**: 1.0.0
**Maintainer**: Crypto DT Source Team