3.5 KiB
3.5 KiB
Contributing to VidBee
Thank you for taking the time to improve VidBee. These notes keep the project maintainable and easy to review.
Getting Ready
- Use Node.js 18+ and pnpm 8+.
- Install dependencies with
pnpm install. - Run
pnpm devto test changes locally.
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.
Local Development
- Use
pnpm installto pull dependencies after cloning. - Start the Electron and Vite development environment with
pnpm dev; hot module replacement is already configured. - Preview the production build locally with
pnpm start.
Useful Scripts
| Command | Purpose |
|---|---|
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 for inspection. |
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
- i18next drives localization with English (
en) and Simplified Chinese (zh-CN) namespaces. - Only update strings in
src/renderer/src/locales/en.json; maintainers handle the other locales. - Keep copy edits focused and avoid removing translation keys without discussion.
Configuration and Storage
- Persistent settings are stored with
electron-storeand exposed through IPC helpers. - User-facing preferences such as download paths and themes live in
src/main/settings.tsand related services. - Logs are recorded with
electron-logto simplify troubleshooting.
Packaging
- Build production bundles with
pnpm build. - Create platform-specific artifacts with
pnpm build:win,pnpm build:mac, orpnpm build:linux. - Use
pnpm build:unpackto generate unpacked directories underdist/for manual inspection.
Working on Changes
- Keep each pull request focused on a single problem or feature.
- Run
pnpm run checkbefore committing to ensure formatting and linting stay consistent. - Write comments and console messages in English only.
- When updating copy in the app, adjust strings in
src/renderer/src/locales/en.json; other locale files are handled by maintainers.
Opening Issues
- Search existing issues to avoid duplicates.
- Describe the problem clearly with steps to reproduce, expected behaviour, and screenshots or logs when useful.
Submitting Pull Requests
- Explain the motivation and impact of the change in the description.
- Mention any user facing updates or migrations.
- Confirm that
pnpm run checkpasses and note any follow-up work that is out of scope.
We appreciate every contribution that keeps VidBee simple and reliable.