Warning
This project has been sunset and merged into ImgVault. Please use and contribute to ImgVault going forward.
PermaVid is a local video archiving tool that helps you download, manage, and archive videos from various sources.
- Install dependencies pnpm install
- set up prisma: pnpm prisma generate
- Run the Tauri app in development mode: pnpm run dev:tauri
PermaVid now requires users to sign in with Google when the application launches. This helps secure your archives and provides a personalized experience. See Authentication Setup for instructions on configuring Google OAuth.
This application uses Neon PostgreSQL as its database for archives. Follow these steps to set up your database:
- Create a free account at Neon
- Create a new project and database
- Get your connection string from the Neon dashboard
- Create a
.envfile in the root of the project with the following content:Replace the placeholders with your actual connection details.NEON_DATABASE_URL=postgresql://[user]:[password]@[neon-hostname]/[dbname] - Run the database initialization script:
pnpm db:init
- User Identification: Each archive is associated with a user ID, allowing tracking of who archived which link
- Archive Access: Archives can be accessed by users
- User-specific Settings: Settings are stored per-user
To run the Next.js app in your browser:
pnpm run devOpen http://localhost:3000 in your browser.
To run the Electron app in development mode:
pnpm run dev:electronBefore building, ensure you have:
- Rust installed (for Tauri): https://rustup.rs/
- All dependencies installed:
pnpm install - Environment variables configured:
.env.localwith Google OAuth credentials.envwith Neon PostgreSQL connection string
The Tauri build creates a native desktop application with the smallest file size and best performance:
-
Development build (for testing):
pnpm run build:tauri
-
Production release build:
pnpm run tauri build
This will create:
- Windows:
.exeinstaller intauri/target/release/bundle/msi/ - macOS:
.appand.dmgintauri/target/release/bundle/dmg/ - Linux:
.deb,.rpm, and.AppImageintauri/target/release/bundle/
The production build automatically:
- ✅ Sets auto-upload to
trueby default - ✅ Sets delete-after-upload to
trueby default - ✅ Uses user's Downloads directory automatically
- ✅ Includes simplified 2-state system (downloaded → uploaded)
- ✅ Handles popup-closed errors gracefully
- ✅ Creates default settings for new users
Electron (if preferred):
pnpm run build && pnpm run distNext.js Web App:
pnpm run build && pnpm startThe final executable will be a standalone installer that includes:
- Complete video downloading capabilities (yt-dlp)
- Local PostgreSQL database
- All dependencies bundled
- No additional runtime requirements
src/- Main source codeelectron/- Electron main & preload scriptstauri/- Tauri configurationout/- Build output
GET /api/archives- Get all archivesGET /api/archives/[id]- Get details of a specific archivePOST /api/archives/add- Add a new archive
MIT