2025-10-23 21:52:35 +08:00
2025-10-22 21:43:33 +08:00
2025-10-22 21:43:33 +08:00
2025-10-23 21:52:35 +08:00
2025-10-22 21:43:33 +08:00

VidBee

VidBee icon

A minimal Electron downloader for video and audio

Built with Electron, React, TypeScript, Tailwind CSS, and shadcn/ui.

Features

  • Download single videos, audio-only tracks, or entire playlists through a unified flow.
  • Queue multiple jobs with progress tracking, pause, resume, retry, and download history.
  • Detect platform-friendly formats automatically and store files in custom locations.
  • Quick actions for popular sites plus manual URL entry for anything yt-dlp supports.
  • Theme toggle (system, light, dark) and localized interface in English and Simplified Chinese.
  • Desktop-native touches such as tray integration, update checks, and persistent settings.

Tech Stack

  • Runtime: Electron 38, electron-vite, electron-builder.
  • Frontend: React 19, React Router, Jotai, React Hook Form, Tailwind CSS 4, shadcn/ui, Lucide icons.
  • Tooling: TypeScript 5, pnpm, Biome, dayjs, electron-log, electron-store, electron-updater, i18next, next-themes.

Getting Started

Prerequisites

  • Node.js 18 or newer
  • pnpm 8 or newer

Install dependencies

pnpm install

Run the app in development

pnpm dev

The Electron app and Vite dev server launch together with hot module replacement.

Useful Scripts

Command Description
pnpm dev Run the Electron and Vite development environment.
pnpm start Preview the production build locally.
pnpm run typecheck Type-check the main and renderer projects.
pnpm build Run type checks and produce production bundles.
pnpm build:win / pnpm build:mac / pnpm build:linux Create platform-specific distributables.
pnpm build:unpack Produce unpacked output directories.
pnpm run check Format and lint the codebase with Biome.

Project Structure

src/
├─ main/            # Electron main process, IPC services, configuration
├─ preload/         # Context bridge and preload helpers
└─ renderer/
   ├─ src/
   │  ├─ pages/      # Application routes (Home, Settings, Playlist, etc.)
   │  ├─ components/ # UI components, download views, shared controls
   │  ├─ data/       # Static datasets such as popularSites.ts
   │  ├─ hooks/      # Custom hooks and global atoms
   │  ├─ lib/        # Utilities shared across the renderer
   │  └─ assets/     # Global styles and icons
   └─ index.html

Internationalization

The renderer uses i18next with English (en) and Simplified Chinese (zh-CN) namespaces. Update strings in src/renderer/src/locales/en.json; other locales are maintained separately.

Configuration and Storage

  • Persistent settings are stored with electron-store and exposed through IPC helpers.
  • User-facing preferences such as download paths and themes live in src/main/settings.ts and related services.
  • Logs are recorded with electron-log to simplify troubleshooting.

Packaging

Run one of the following commands after a successful build:

pnpm build:win
pnpm build:mac
pnpm build:linux

Artifacts are generated under dist/. Use pnpm build:unpack to create unpacked directories for manual inspection.

Contributing

Issues and pull requests are welcome. Keep changes focused, document user facing updates, and run pnpm run check before opening a PR.

License

This project is distributed under the MIT License. See LICENSE for details.

Thanks

Description
Download videos from almost any website worldwide
Readme MIT 8.1 MiB
Languages
TypeScript 92.3%
JavaScript 4.7%
CSS 2.9%
HTML 0.1%