A media streaming application with debrid provider integration.
-
Copy
.env.exampleto.envand configure your API keys:cp .env.example .env
-
Required environment variables:
OMDB_API_KEY: OMDb API key (fallback if no user key configured)FANART_API_KEYorFANARTTV_API_KEY: Fanart.tv API keyALLDEBRID_API_KEY: AllDebrid API keyJWT_SECRET: Secret for JWT token signing
- Node.js 18+
- npm or yarn
- Git
# Clone the repository
git clone https://github.com/yourusername/flake-wire.git
cd flake-wire
# Install all dependencies
npm run install-all
# Start development servers
npm run devnpm run dev: Start both backend and frontend in development modenpm run server: Start only backend servernpm run client:dev: Start only frontend development servernpm run electron:dev: Start Electron app in development mode
# Build the client and Electron app
npm run build:all
# Package for specific platforms
npm run electron:build:linux # Linux AppImage
npm run electron:build:mac # macOS DMG
npm run electron:build:win # Windows NSIS installer# Build and deploy with Docker
npm run docker:build
npm run docker:up- Multi-platform support (Windows, macOS, Linux)
- Embedded FFmpeg for video transcoding
- Secure API key storage
- OAuth authentication (Trakt, AllDebrid)
- Real-time notifications
- Auto-updater support
The app is configured for automated releases via GitHub Actions:
- Windows: NSIS installer (.exe)
- macOS: DMG disk image (.dmg)
- Linux: AppImage (.AppImage)
Version management is handled through GitHub Actions:
- Automatic version bumping via
version-bump.ymlworkflow - Changelog generation for releases
- Git tags for version tracking
- Code changes trigger automatic build
- GitHub Actions builds for all platforms
- Artifacts are uploaded and tagged
- GitHub release is created automatically
- Users can download from Releases page
MIT License - see LICENSE file for details.
- Full-stack media experience: Electron desktop or browser
- Debrid support: AllDebrid API key flow built-in; Real‑Debrid scaffolding present
- Secure credentials: AES‑256‑GCM encrypted storage per user/profile
- Smart playback: direct MKV streaming with fast MP4 remux or HLS fallback
- OAuth integrations: Trakt device code; AllDebrid PIN; Real‑Debrid OAuth (scaffold)
- Flexible deploy: local dev, packaged desktop builds, or Docker
- Frontend:
client(Vite + React + Tailwind) - Backend/API:
server(Express + Axios + Cheerio + Playwright for optional scraping modules) - Desktop:
electron/main.jsboots the server and loads the UI - Assets/Packaging: electron-builder config in root
package.json - Optional scripts:
streaming_scraper.pyfor manual link processing/unlock
- Search and metadata
- OMDb + optional fanart.tv for posters/backdrops
- Enhanced search endpoints with suggestions and stats
- Debrid providers
- AllDebrid API-key flow with PIN auth helper and link unlocking
- Real‑Debrid provider class and OAuth plumbing present
- Playback
- Direct streaming for MP4/WebM/M4V; MKV remux to MP4 for browser
- Optional forced transcode to HLS (Electron) with
ELECTRON_TRANSCODE
- Security & storage
- Per-user encrypted API keys and OAuth tokens
- Cross‑platform app data directories (Windows/macOS/Linux)
- Desktop niceties
- External player handoff (mpv/VLC) from Electron
- App‑bundled ffmpeg via
ffmpeg-staticwhen available
Prerequisites
- Node.js 18+ and npm
- mpv or vlc for mkv playback
Install everything
npm run install-all
apt install mpv -yCreate environment
cp .env.example .env
# Edit .env to add keys (see below)Run in development (API + Vite UI)
npm run dev
# API: http://localhost:3001 UI: http://localhost:5173Launch Electron (development)
npm run client:build
npm run electron:devBuild desktop app (all platforms configured)
# Build web UI, then package Electron
npm run electron:build
# or platform specific: electron:build:linux | :mac | :winCopy .env.example and customize as needed:
PORT: API port (default 3001)JWT_SECRET: token signing for authenticated routes- Debrid:
ALLDEBRID_API_KEY,ALLDEBRID_AGENT(e.g.flake-wire) - Metadata:
OMDB_API_KEY,FANARTTV_API_KEY,TMDB_API_KEY(if used) - OAuth (optional):
TRAKT_CLIENT_ID,TRAKT_CLIENT_SECRET
AllDebrid PIN auth via API is supported in the app; on success your API key is stored securely and also made available to the backend.
npm run dev: backend with nodemon + Vite UInpm run client:build: build frontend toclient/distnpm run electron:dev: run Electron pointing at the local servernpm run electron:build: package desktop app with electron-buildernpm run docker:dev|prod: compose files for Docker workflows
Development
npm run docker:devProduction
npm run docker:prod
# logs
npm run docker:logsGET /api/health: server, debrid providers, featuresGET /api/search: torrent/search providers with filters and statsGET /api/video/formats: supported playback formats- Config endpoints under
/api/configfor storing/testing keys - OAuth endpoints under
/auth/oauth/...for Trakt/Real‑Debrid/AllDebrid
The repo includes a standalone helper streaming_scraper.py for manually unlocking filehost links with AllDebrid (no browser automation).
Quick use
python streaming_scraper.pySupports:
- Manual URL entry or reading from a text file
- Link validation, unlock via AllDebrid, and JSON export of results
- No UI in Electron: make sure you built the client (
npm run client:build) beforeelectron:dev. - AllDebrid not detected: set
ALLDEBRID_API_KEYor use the in‑app PIN flow; check/api/healthfor provider status. - MKV won’t play in browser: the server remuxes to MP4; for Electron you can force HLS with
ELECTRON_TRANSCODE=true. - Permission errors writing storage: verify your user has access to the app data path printed in logs.
- Open an issue with a clear description and repro steps
- Keep changes focused; add docs where behavior changes
- PRs should build the UI and pass linting locally
MIT
Educational use only. Use responsibly and comply with applicable laws.
Since automated scraping is removed, contributions can focus on:
- Adding more supported hosts
- Improving error handling
- Better user interface
- Enhanced file processing
- Performance optimizations
Note: This is a clean, manual-only version. All automated scraping functionality has been permanently removed due to technical limitations.
