Customized Ocean.xyz Bitcoin Mining Pool Dashboard
Go to file
DJObleezy 3c8bc908df Add timezone awareness to NotificationService
Introduce _get_current_time and _parse_timestamp methods
to handle timezone-aware datetime management. Replace
instances of datetime.now() with the new method to ensure
consistent timestamp handling throughout the class.
2025-04-25 05:33:00 -07:00
static Update healthchecks and CSS animations 2025-04-24 16:55:05 -07:00
templates Remove memory dashboard functionality and related files 2025-04-24 16:35:16 -07:00
App.py Remove memory dashboard functionality and related files 2025-04-24 16:35:16 -07:00
config.json Add network fee support to dashboard configuration 2025-04-22 07:43:57 -07:00
config.py Add network fee support to dashboard configuration 2025-04-22 07:43:57 -07:00
data_service.py Add network fee support to dashboard configuration 2025-04-22 07:43:57 -07:00
deployment_steps.md Update deployment instructions and chart indicator style 2025-04-23 18:47:50 -07:00
docker-compose.yml Remove healthcheck configurations from services 2025-04-24 17:09:08 -07:00
dockerfile Enhance services and improve code structure 2025-04-23 21:56:25 -07:00
LICENSE.md Add files via upload 2025-04-09 11:46:24 -07:00
minify.py Enhance services and improve code structure 2025-04-23 21:56:25 -07:00
models.py Enhance services and improve code structure 2025-04-23 21:56:25 -07:00
notification_service.py Add timezone awareness to NotificationService 2025-04-25 05:33:00 -07:00
project_structure.md Update project structure and enhance documentation 2025-04-23 14:23:07 -07:00
README.md Update README.md 2025-04-24 18:50:07 -07:00
requirements.txt Add files via upload 2025-04-09 11:46:24 -07:00
setup.py Add theme toggle feature and configuration updates 2025-04-22 20:39:45 -07:00
state_manager.py Add memory management features and API endpoints 2025-04-24 15:47:51 -07:00
worker_service.py Add boot sequence bypass and improve earnings check 2025-04-24 07:17:36 -07:00

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.


DeepSea Boot DeepSea Config DeepSea Dashboard DeepSea Workers DeepSea Blocks DeepSea Notifications


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
  • Error Handling: Displays a user-friendly error page (error.html) for unexpected issues.

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

DeepSea Theme

  • Underwater Effects: Light rays and digital noise create an immersive experience.
  • Retro Glitch Effects: Subtle animations for a nostalgic feel.
  • Theme Toggle: Switch between Bitcoin and DeepSea themes with a single click.

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.

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.
  • NETWORK_FEE: Additional fees beyond pool fees (e.g., firmware fees).
  • TIMEZONE: Local timezone for displaying time information.

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.

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

API Endpoints

  • /api/metrics: Provides real-time mining metrics.
  • /api/available_timezones: Returns a list of supported timezones.
  • /api/config: Fetches or updates the mining configuration.
  • /api/health: Returns the health status of the application.

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.

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