Built with
How RuForge uses each tool in the stack. Sixteen entries, same as the Docs nav grid.
-
YouTube Downloader
You paste a YouTube link. RuForge downloads the file and plays it locally. There is no in-app YouTube player.
-
yt-dlp Engine
Every download and metadata preview shells out to a bundled yt-dlp binary. Rust owns the process; React shows the progress.
-
SponsorBlock API
Community skip segments from SponsorBlock apply to local files, same idea as the browser extension, without streaming from YouTube.
-
Tauri v2 Shell
Tauri turns the Vite React app into a signed Windows desktop binary with extra windows, sidecars, and IPC.
-
Rust Core
Downloads, disk scans, ffmpeg jobs, and SponsorBlock fetches run in Rust. The React layer invokes and renders.
-
React 19 Core
The desktop UI is React 19 inside Tauri webviews. Tabs replace a router; Zustand picks the active surface.
-
FFmpeg Processing
ffmpeg and ffprobe ship as bundled sidecars for yt-dlp muxing, scrubber sprite sheets, and quiet metadata probes.
-
Zustand State Store
One Zustand store is the main-window brain: nav, settings, download queue, gallery list, and hero metadata.
-
Vite Build Tool
Vite bundles the desktop React app that Tauri loads in main and mini webviews.
-
TypeScript
Frontend domain types and IPC boundaries are TypeScript so refactors fail at compile time, not in the webview.
-
Tailwind CSS
Tailwind v4 utility classes plus rf-* CSS tokens style the desktop app and the public site from the same palette idea.
-
Astro Site
The public RuForge site in `website/` is Astro 5 static output, deployed to Cloudflare Pages.
-
WebView2 Shell
On Windows, WebView2 (Edge Chromium) hosts the React UI and a separate embedded surface for Explorer cookie flows.
-
Framer Motion
Framer Motion shows up on the marketing site hero, not in the desktop player control dock.
-
Lucide Icons
Lucide React icons are the default glyph set for downloader, library, player, settings, and queue UI.
-
Sharp Images
Sharp is Astro image pipeline dependency. It runs at site build time, not in the desktop app.