Files
media-downloader/docs/DASHBOARD.md
Todd 0d7b2b1aab Initial commit
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 22:42:55 -04:00

6.8 KiB
Raw Permalink Blame History

Dashboard Features

Overview

The Dashboard provides real-time monitoring and control of your media downloader system with automatic refresh capabilities and quick actions for scheduled tasks.

Auto-Refresh Functionality

The Dashboard automatically refreshes data at different intervals to provide real-time updates without manual page refreshes:

Refresh Intervals

  • Stats & System Status: Every 30 seconds

    • Total downloads
    • Last 24 hours activity
    • Total storage size
    • Duplicates prevented
    • Scheduler running status
    • Active WebSocket connections
  • Recent Downloads: Every 10 seconds

    • Shows the latest 5 downloads
    • Includes thumbnails and metadata
    • Click thumbnails to view in lightbox
  • Current Activity: Every 2 seconds

    • Real-time status of active scraping jobs
    • Platform and account being scraped
    • Elapsed time since start
  • Next Scheduled Run: Every 10 seconds

    • Shows upcoming scheduled task
    • Platform and account details
    • Time until next run (relative format)

Quick Actions

Currently Scraping Controls

When a download is actively running, the Dashboard displays:

Stop Button (Red Button)

  • Function: Immediately stops the running download task
  • Behavior:
    • Terminates the active download process
    • Shows "Stopping..." while processing
    • Clears the current activity display
    • Returns to showing next scheduled run (if any)
    • Sends SIGTERM signal to the process
  • Use Case: When you need to cancel an in-progress download

Next Scheduled Run Controls

When a task is scheduled, the Dashboard displays three action buttons:

1. Run Now (Blue Button)

  • Function: Immediately triggers the scheduled download task
  • Behavior:
    • Starts the download without waiting for the scheduled time
    • Shows "Starting..." while processing
    • Updates to "Currently Scraping" view when active
    • Original schedule remains unchanged
  • Use Case: When you want to manually trigger a download immediately

2. Skip Run (Amber Button)

  • Function: Skips the next scheduled run by advancing the next_run time
  • Behavior:
    • Adds one interval period to the next_run time
    • Example: If scheduled in 2 hours with 4-hour interval, skip moves it to 6 hours
    • Shows "Skipping..." while processing
    • Updates display with new next run time
  • Use Case: When you want to postpone a specific scheduled run

3. View Schedule (Gray Button)

  • Function: Navigate to the Scheduler page
  • Behavior: Links to full scheduler view with all tasks
  • Use Case: When you need to see or manage all scheduled tasks

Statistics Cards

Total Downloads

  • All-time download count
  • Blue icon with download symbol
  • Updates every 30 seconds

Last 24 Hours

  • Recent activity count
  • Green icon with activity symbol
  • Updates every 30 seconds

Total Size

  • Disk space used by all downloads
  • Purple icon with database symbol
  • Formatted in human-readable units (GB, MB, etc.)
  • Updates every 30 seconds

Duplicates Prevented

  • Number of duplicate files avoided
  • Orange icon with trending up symbol
  • Shows space savings through deduplication
  • Updates every 30 seconds

Charts

Downloads by Platform

  • Bar chart showing download distribution across platforms
  • Platforms: Instagram (multiple methods), TikTok, Snapchat, Forums
  • Responsive design adjusts to screen size
  • Updates when stats refresh (every 30 seconds)

Recent Downloads

  • Visual list of last 5 downloads
  • Thumbnail previews (click to view full size in lightbox)
  • Shows filename, platform, source, and relative time
  • Updates every 10 seconds

Current Activity Display

When a download is actively running:

  • Animated pulsing activity indicator
  • Platform and account being scraped
  • Elapsed time (relative format like "2 minutes ago")
  • Blue gradient background for visibility
  • Updates in real-time (every 2 seconds)

System Status

Shows three key system metrics:

Scheduler Status

  • Running: Green badge - Scheduler is active
  • Stopped: Gray badge - Scheduler is not running

Active Connections

  • Number of active WebSocket connections
  • Indicates how many users/browsers are connected

Last Update

  • Timestamp of last system status update
  • Relative format (e.g., "10 seconds ago")

Lightbox Viewer

Click any thumbnail in Recent Downloads to view full media:

Features

  • Full-screen overlay with dark background
  • Close button (X) or click outside to exit
  • Displays full resolution image or video
  • Video controls (play, pause, volume) for video files

Metadata Display

  • Filename (with break-all to prevent overflow)
  • Platform (formatted name)
  • Source (username/account)
  • File size (human-readable format)
  • Download date (formatted)
  • Resolution: Dynamically detected on load
    • Images: Natural width × height
    • Videos: Video width × height

Responsive Design

The Dashboard adapts to different screen sizes:

  • Desktop (≥1024px): 4-column stats grid, full chart layout
  • Tablet (≥768px): 2-column stats grid, stacked charts
  • Mobile (<768px): Single column layout, optimized spacing

Performance Considerations

Efficient Polling

  • Uses React Query's refetchInterval for intelligent polling
  • Automatically pauses when window loses focus (browser optimization)
  • Background tabs reduce polling frequency

Lazy Loading

  • Thumbnails load on demand
  • Images use loading="lazy" attribute
  • Prevents unnecessary network requests

Caching

  • React Query caches responses
  • Reduces redundant API calls
  • Provides instant updates when cache is valid

Best Practices

  1. Keep Dashboard Open: For real-time monitoring during active scraping
  2. Use Quick Actions: Avoid navigating away to trigger or skip runs
  3. Monitor Stats: Watch for unusual patterns in downloads or duplicates
  4. Check System Status: Ensure scheduler is running if expecting automated downloads

Troubleshooting

Dashboard Not Updating

  1. Check browser console for errors
  2. Verify API service is running: systemctl status media-downloader-api
  3. Check WebSocket connection status in Network tab

Quick Actions Not Working

  1. Ensure you're logged in with valid session
  2. Check API logs: journalctl -u media-downloader-api -n 50
  3. Verify scheduler service is running: systemctl status media-downloader

Stats Show Zero

  1. Database may be empty or new installation
  2. Run manual download to populate data
  3. Check database connectivity

API Endpoints Used

  • GET /api/stats - Dashboard statistics
  • GET /api/status - System status
  • GET /api/downloads?limit=5 - Recent downloads
  • GET /scheduler/current-activity - Active scraping info
  • GET /scheduler/status - Scheduler and tasks status
  • POST /platforms/{platform}/trigger - Run Now action
  • POST /scheduler/tasks/{task_id}/skip - Skip Run action
  • POST /scheduler/current-activity/stop - Stop current download