Frontend
The React-based frontend application that provides the user interface for MediaGo, used in both Electron desktop app and standalone web application.
Overview
This package contains the React frontend that:
- Provides the main user interface for video downloading
- Handles video URL input and processing
- Displays download progress and history
- Manages application settings and preferences
- Communicates with backend services via Socket.io
- Works in both Electron renderer and standalone web contexts
Key Features
- Video Download Interface: Clean UI for adding and managing downloads
- Real-time Updates: Live progress tracking via Socket.io
- Responsive Design: Works on desktop and mobile devices
- Theme Support: Light/dark mode capabilities
- Multi-platform: Shared UI for Electron desktop and web versions
- Settings Management: User preferences and configuration
Technologies
- React 18: Modern React with hooks and concurrent features
- Vite: Fast build tool and dev server
- Ant Design: UI component library
- TailwindCSS: Utility-first CSS framework
- Shadcn/ui: Modern component library
- Zustand: Lightweight state management
- Socket.io Client: Real-time communication
- TypeScript: Type-safe development
Development
# Start development mode (with Electron)
pnpm dev
# Start web-only development
pnpm dev:web
# Build frontend
pnpm build:web
pnpm build:renderer
# Type checking
pnpm types:renderer
Architecture
The frontend is designed to work in two contexts:
- Electron Renderer: Loaded in Electron's BrowserWindow
- Standalone Web: Served by the webapi backend for browser access
It communicates with the backend services through Socket.io for real-time updates and HTTP APIs for data operations.