# DeepSea Dashboard ## A Retro Mining Monitoring Solution This open-source dashboard provides real-time monitoring for Ocean.xyz pool miners, offering detailed insights on hashrate, profitability, worker status, and network metrics. Designed with a retro terminal aesthetic and focused on reliability, it helps miners maintain complete oversight of their operations. --- ## Gallery: ![DeepSea Boot](https://github.com/user-attachments/assets/77222f13-1e95-48ee-a418-afd0e6b7a920) ![DeepSea Config](https://github.com/user-attachments/assets/48fcc2a6-f56e-48b9-ac61-b27e9b4a6e41) ![DeepSea Dashboard](https://github.com/user-attachments/assets/f8f3671e-907a-456a-b8c6-5d9ecd07946c) --- ## Key Features ### Real-Time Mining Metrics - **Live Hashrate Tracking**: Monitor 60-second, 10-minute, 3-hour, and 24-hour average hashrates - **Profitability Analysis**: View daily and monthly earnings in both BTC and USD - **Financial Calculations**: Automatically calculate revenue, power costs, and net profit - **Network Statistics**: Track current Bitcoin price, difficulty, and network hashrate - **Payout Monitoring**: View unpaid balance and estimated time to next payout - **Pool Fee Analysis**: Monitor pool fee percentages with visual indicator when optimal rates (0.9-1.3%) are detected ### Worker Management - **Fleet Overview**: Comprehensive view of all mining devices in one interface - **Status Monitoring**: Real-time status indicators for online and offline devices - **Performance Data**: Individual hashrate, temperature, and acceptance rate metrics - **Filtering Options**: Sort and search by device type or operational status ### Bitcoin Block Explorer - **Recent Blocks**: View the latest blocks added to the blockchain - **Block Details**: Examine transaction counts, fees, and mining pool information - **Visual Indicators**: Track network difficulty and block discovery times ### System Resilience - **Connection Recovery**: Automatic reconnection after network interruptions - **Backup Polling**: Fallback to traditional polling if real-time connection fails - **Cross-Tab Synchronization**: Data consistency across multiple browser tabs - **Server Health Monitoring**: Built-in watchdog processes ensure reliability ### Distinctive Design Elements - **Retro Terminal Aesthetic**: Nostalgic interface with modern functionality - **Boot Sequence Animation**: Engaging initialization sequence on startup - **System Monitor**: Floating status display with uptime and refresh information - **Responsive Interface**: Adapts to desktop and mobile devices ## Quick Start ### Installation 1. Clone the repository ``` git clone https://github.com/Djobleezy/DeepSea-Dashboard.git cd DeepSea-Dashboard ``` 2. Install dependencies: ``` pip install -r requirements.txt ``` 3. Run the setup script: ``` python setup.py ``` 4. Start the application: ``` python App.py ``` 5. Open your browser at `http://localhost:5000` For detailed deployment instructions with Redis persistence and Gunicorn configuration, see [deployment_steps.md](deployment_steps.md). ## Using docker-compose (with Redis) The `docker-compose.yml` file makes it easy to deploy the dashboard and its dependencies. ### Steps to Deploy 1. **Start the services**: Run the following command in the project root: ``` docker-compose up -d ``` 2. **Access the dashboard**: Open your browser at `http://localhost:5000`. 3. **Stop the services**: To stop the services, run: ``` docker-compose down ``` ### Customization You can modify the following environment variables in the `docker-compose.yml` file: - `WALLET`: Your Bitcoin wallet address. - `POWER_COST`: Cost of power per kWh. - `POWER_USAGE`: Power usage in watts. Redis data is stored in a persistent volume (`redis_data`), and application logs are saved in the `./logs` directory. For more details, refer to the [docker-compose documentation](https://docs.docker.com/compose/). ## Dashboard Components ### Main Dashboard - Interactive hashrate visualization with trend analysis - Real-time profitability metrics with cost calculations - Network statistics with difficulty and price tracking - Payout information with estimation timing - Visual indicators for metric changes ### Workers Dashboard - Fleet summary with aggregate statistics - Individual worker cards with detailed metrics - Status indicators with color-coded alerts - Search and filtering functionality - Performance trend mini-charts ### Blocks Explorer - Recent block visualization with mining details - Transaction statistics and fee information - Mining pool attribution - Block details modal with comprehensive data ### System Monitor - Floating interface providing system statistics - Progress indicator for data refresh cycles - System uptime display - Real-time connection status ## System Requirements The application is designed for efficient resource utilization: - **Server**: Any system capable of running Python 3.9+ - **Memory**: Minimal requirements (~100MB RAM) - **Storage**: Less than 50MB for application files - **Database**: Optional Redis for persistent state - **Compatible with**: Windows, macOS, and Linux ## Technical Architecture Built with a modern stack for reliability and performance: - **Backend**: Flask with Server-Sent Events for real-time updates - **Frontend**: Vanilla JavaScript with Chart.js for visualization - **Data Processing**: Concurrent API calls with smart caching - **Resilience**: Automatic recovery mechanisms and state persistence - **Configuration**: Environment variables and JSON-based settings ## Project Structure The project follows a modular architecture with clear separation of concerns: ``` DeepSea-Dashboard/ │ ├── App.py # Main application entry point ├── config.py # Configuration management ├── config.json # Configuration file ├── data_service.py # Service for fetching mining data ├── models.py # Data models ├── state_manager.py # Manager for persistent state ├── worker_service.py # Service for worker data management ├── notification_service.py # Service for notifications ├── minify.py # Script for minifying assets ├── setup.py # Setup script for organizing files ├── requirements.txt # Python dependencies ├── Dockerfile # Docker configuration ├── docker-compose.yml # Docker Compose configuration │ ├── templates/ # HTML templates │ ├── base.html # Base template with common elements │ ├── boot.html # Boot sequence animation │ ├── dashboard.html # Main dashboard template │ ├── workers.html # Workers dashboard template │ ├── blocks.html # Bitcoin blocks template │ ├── notifications.html # Notifications template │ └── error.html # Error page template │ ├── static/ # Static assets │ ├── css/ # CSS files │ │ ├── common.css # Shared styles across all pages │ │ ├── dashboard.css # Main dashboard styles │ │ ├── workers.css # Workers page styles │ │ ├── boot.css # Boot sequence styles │ │ ├── blocks.css # Blocks page styles │ │ ├── notifications.css # Notifications page styles │ │ ├── error.css # Error page styles │ │ ├── retro-refresh.css # Floating refresh bar styles │ │ └── theme-toggle.css # Theme toggle styles │ │ │ └── js/ # JavaScript files │ ├── main.js # Main dashboard functionality │ ├── workers.js # Workers page functionality │ ├── blocks.js # Blocks page functionality │ ├── notifications.js # Notifications functionality │ ├── block-animation.js # Block mining animation │ ├── BitcoinProgressBar.js # System monitor functionality │ └── theme.js # Theme toggle functionality │ ├── deployment_steps.md # Deployment guide ├── project_structure.md # Additional structure documentation ├── LICENSE.md # License information └── logs/ # Application logs (generated at runtime) ``` For more detailed information on the architecture and component interactions, see [project_structure.md](project_structure.md). ## Troubleshooting For optimal performance: 1. Ensure your wallet address is correctly configured 2. Check network connectivity for consistent updates 3. Use the system monitor to verify connection status 4. Access the health endpoint at `/api/health` for diagnostics 5. For stale data issues, use the Force Refresh function 6. Use hotkey Shift+R to clear chart and Redis data (as needed, not required) ## License Available under the MIT License. This is an independent project not affiliated with Ocean.xyz. ## Acknowledgments - Ocean.xyz mining pool for their service - mempool.guide - The open-source community for their contributions - Bitcoin protocol developers