A desktop application for managing your video collection, built with React, Vite, and Electron.
- Browse and manage local video files
- Play videos directly in the application
- Organize videos by genre
- Search and filter your video collection
- Light and dark theme support
- Automatic updates
- Node.js (v14 or higher)
- npm (v7 or higher)
# Clone the repository
git clone https://github.com/yourusername/video-collection-manager.git
cd video-collection-manager
# Install dependencies
npm install
# Run the Vite development server
npm run dev
# Run the Electron app in development mode
npm run electron:dev
# Lint the code
npm run lint
# Preview the production build
npm run preview
# Preview the Electron app
npm run electron:preview
# Build for all platforms (Windows, macOS, Linux)
npm run electron:build
# Build for Windows
npm run electron:build:win
# Build for macOS
npm run electron:build:mac
# Build for Linux
npm run electron:build:linux
# Or use the general build command with platform flags
npm run electron:build -- --win --mac
The packaged applications will be available in the dist_electron
directory.
VidMan includes automatic update functionality using electron-updater:
- The application checks for updates on startup
- Users are notified when updates are available
- Updates can be downloaded in the background
- The application can automatically install updates on restart
The application is configured to use GitHub as the update provider. To publish updates:
- Create a new GitHub release with a tag matching your version number (e.g.,
v1.0.1
) - Upload the built application files to the release
- Users will automatically be notified of the new version
The auto-update configuration is defined in:
package.json
- Publishing provider configurationelectron/main.js
- Auto-update initialization and event handling
The application is configured to build for multiple platforms using electron-builder. The configuration is defined in the build
field of package.json
.
Before building for production, make sure to create the following icon files:
- Windows:
public/icon.ico
- macOS:
public/icon.icns
- Linux:
public/icon.png
See public/icon-instructions.txt
for details on creating these icons.
- Frontend: React + Vite
- Desktop: Electron
- Styling: Tailwind CSS
- State Management: React Context
- API Integration: TMDB API v3
- Build Tool: electron-builder
- Auto-updates: electron-updater
/src
- React application source/components
- React components/contexts
- React context providers/lib
- Utility functions and API clients
/electron
- Electron main process filesmain.js
- Main process entrypreload.js
- Preload scripts
The application expects your video collection to follow this structure:
Video Folder/
├── Movie Name (Year)/
│ ├── movie.nfo
│ ├── poster.jpg
│ ├── fanart.jpg
│ └── video file
Supports the following metadata from NFO files:
- Movie title and year
- Plot and tagline
- Rating and runtime
- Genres and certification
- Cast information
- Video/audio stream details
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.