Skip to content
kuberbassiPublic

Latest commit

 

History

52 Commits

Folders and files

Repository files navigation

Savewave icon

Savewave

Paste → Resolve → Preview → Save

A privacy-focused media saver for public video and audio running entirely on your device.

Official Website · Changelog · Maintenance Guide · License

Electron TypeScript Capacitor yt-dlp License


Overview

Savewave is a clean, local-first media downloader. It automatically detects media sources, extracts best-available quality streams, and saves them directly to your device without accounts, cloud processing, or server uploads.

  • Local Processing: Extraction runs on-device via bundled yt-dlp and FFmpeg.
  • Zero Cloud Storage: No remote user database, tracking, or media proxies. All sessions and downloads remain strictly on your local device.
  • On-Demand Instagram Authentication: Seamless in-app login modal on Desktop and Android for Instagram Reels that require authentication. Sessions are stored locally on your device, persist across app updates, and silently prompt for re-login if cookies expire.
  • Supported Sources:
    • YouTube: High-definition video and audio extraction powered by pinned, regularly-updated yt-dlp.
    • Instagram Reels: Full video and audio extraction with local session authentication support. (Instagram posts, carousels, and Stories remain unsupported).
    • Spotify: Smart Match discovery linking track metadata to exact, high-confidence audio streams.
    • SoundCloud & Direct Links: Stream resolution and direct media file downloads. (Note: Facebook, X/Twitter, and DRM-protected media are not supported).

Tech Stack & Architecture

Layer Technologies Responsibility
Frontend UI React 18, Tailwind CSS Responsive Paste → Preview → Save interface & authentication modal
Core Logic TypeScript, Vitest Source detection, capability gates, error handling, Spotify match scoring
Desktop App Electron, Node.js Isolated IPC, bundled engines, native saving, verified GitHub updates, and in-app Instagram login modal
Media Engine yt-dlp, FFmpeg Local public media extraction and stream remuxing
Android App Capacitor, small Java bridge, youtubedl-android Native engine, scoped MediaStore saving, and in-app WebView authentication

Development Setup

Prerequisites

  • Node.js 22+
  • Android Studio and Java 21 for APK builds

Quick Start

# 1. Install dependencies
npm install

# 2. Run typecheck & test suite
npm run check

# 3. Download local sidecars & launch desktop app in dev mode
npm run prepare:sidecars
npm run electron:dev

Useful Commands

# Run test suite
npm test

# Build production desktop installer
npm run electron:pack -- --publish never

# Sync the Android project, then build its APK in android/
npm run capacitor:sync

Documentation


Developer & Author

Created and maintained by Kuber Bassi (kuberbassi.com · @kuberbassi · LinkedIn).


License

MIT © Kuber Bassi.