Skip to content

d3f4ultt/d3flix

Repository files navigation

D3FLIX

D3FLIX Dashboard

A self-hosted personal media server with an AI-powered butler assistant. Stream your local library from any browser, control downloads, and talk to Alfred — your personal media AI — by voice or text.

D3FLIX Node.js Windows License


Features

Media Library

  • Scans local directories recursively for movies and TV shows
  • Smart filename parser — extracts title, year, season/episode automatically
  • Organized browsing by category, genre, and recently added
  • TMDB poster integration (optional, free API key)
  • Auto-generates video thumbnails
  • Full-text search across title, genre, and year
  • Subtitle support (SRT, VTT, ASS)
  • Custom poster/thumbnail upload per item
  • Playlist queuing with repeat modes

Streaming

  • In-browser video player with HTTP range-request support (seek works)
  • Keyboard shortcuts: / to search, Esc to close
  • Previous/next episode navigation
  • Caption/subtitle toggle
  • Transcoded stream endpoint for compatibility

Alfred — AI Butler

Alfred is your omniscient media assistant powered by Claude (Anthropic). He speaks like Batman's trusted butler and can do anything on the platform:

  • Download on command — "Download Jackass" → Alfred searches, picks the best torrent, starts it immediately. No confirmation prompts.
  • Monitor downloads — "What's downloading?" → live progress, speed, ETA
  • Control torrents — pause, resume, remove by voice or text
  • Browse library — "Do we have any Nolan films?" → searches local collection
  • Show episodes — "List all One Piece seasons" → full episode guide
  • Manage server — rescan library, view/update configuration, switch torrent clients
  • Voice input — 🎙 mic button; Alfred speaks replies back in a British butler voice
  • Global floating widget — mini pixel-art butler in the bottom-right, accessible from every page
  • Download notifications — Alfred announces when something finishes and offers to play it

Torrent Integration

  • Supports qBittorrent (recommended for Windows) and Transmission
  • Search The Pirate Bay from the Torrents tab or via Alfred
  • Results sorted by seeders — dead torrents filtered automatically
  • HTTP tracker fallback for restricted networks (WSL2, NAT, etc.)

Windows — Native App (No Terminal Required)

D3FLIX ships a native Windows application built with C# WPF + WebView2. No browser, no terminal — just install and launch.

Download & Install

  1. Download D3FLIX-Setup.exe from Releases
  2. Run the installer — no admin required
  3. D3FLIX installs to %LOCALAPPDATA%\Programs\D3FLIX
  4. A desktop shortcut and Start Menu entry are created automatically
  5. D3FLIX launches after install

What the Windows app does

  • Appears as a system tray icon (red = running, grey = starting)
  • Starts the Node.js server automatically in the background
  • Opens D3FLIX in its own native window (not a browser tab)
  • Double-click the tray icon to open the window anytime
  • Right-click the tray icon: Open / Server Log / Restart Server / Quit

Build from source (Windows)

Requirements: .NET 8 SDK, Node.js, Inno Setup 6

git clone https://github.com/d3f4ultt/d3flix.git
cd d3flix
npm install
cd d3flix-win
.\build.ps1

The build script generates icons, downloads a portable Node.js 20 runtime, compiles the C# app, and produces d3flix-win\installer\output\D3FLIX-Setup.exe.


Quick Start (Terminal / Cross-Platform)

git clone https://github.com/d3f4ultt/d3flix.git
cd d3flix
npm install
node server.js

Open http://localhost:3000 — then go to Settings to add your media directories and API keys.


Requirements

  • Node.js v18+ (bundled in the Windows installer — not required separately)
  • qBittorrent (Windows) or Transmission with Web UI enabled
  • Anthropic API key for Alfred — console.anthropic.com (free tier available)
  • TMDB API key (optional, for official posters) — themoviedb.org/settings/api

Configuration

config.json is created automatically. You can edit it directly or use the Settings UI:

{
  "mediaDirs": [
    "C:\\Users\\YourName\\Videos\\movies",
    "D:\\Media"
  ],
  "tmdbApiKey": "your_tmdb_key",
  "alfredApiKey": "sk-ant-...",
  "torrentClient": "qbittorrent",
  "qbittorrentHost": "localhost",
  "qbittorrentPort": 8080,
  "qbittorrentUser": "admin",
  "qbittorrentPass": "adminadmin"
}

qBittorrent Web UI Setup

Alfred requires the qBittorrent Web UI to manage downloads:

  1. Open qBittorrent → Tools → Options → Web UI
  2. Check "Web User Interface (Remote control)"
  3. Port: 8080 · Username: admin · Password: adminadmin
  4. Click OK

Alfred Voice

Uses the browser's built-in Web Speech API — no external service needed.

  • 🎙 button — click to start, auto-sends when you stop speaking
  • 🔊 toggle — mute/unmute Alfred's voice replies
  • Global widget — the mini butler (bottom-right) works from any page
  • Best in Chrome or Edge

Alfred prefers a British male voice (Daniel, Google UK English Male, Microsoft George).


Folder Structure

D3FLIX uses folder names as categories. Organize like this:

Videos/
├── Movies/
│   ├── Inception.2010.1080p.mkv
│   └── The.Matrix.1999.mp4
├── TV Shows/
│   ├── Breaking Bad/
│   │   ├── Breaking.Bad.S01E01.mp4
│   │   └── Breaking.Bad.S01E02.mp4
│   └── Westworld/
│       └── Westworld.S01E01.mkv
└── Anime/
    └── Cowboy.Bebop.S01E01.mkv

API Reference

Endpoint Description
GET /api/library Library stats and media dir info
GET /api/browse All items grouped by category
GET /api/recent?limit=20 Recently added
GET /api/search?q=query Search library
GET /api/media/:id Single item with episode list
GET /api/stream/:id Stream video (range requests)
GET /api/shows TV shows with full episode listings
POST /api/rescan Rescan media directories
GET /api/downloads/status Torrent client status
GET /api/downloads/list Active/queued torrents
POST /api/downloads/add Add magnet link
POST /api/downloads/action Pause/resume/verify
DELETE /api/downloads/remove/:id Remove torrent
GET /api/tpb/search?q=query Search The Pirate Bay
POST /api/alfred Alfred AI chat endpoint
POST /api/profile/event Record play/download events
GET /api/config Get configuration
POST /api/config Update configuration

Alfred Tool Reference

Alfred has full server access through these tools:

Tool What it does
search_torrents Search The Pirate Bay
add_torrent Add to download queue (auto-picks best)
list_downloads Live download progress and status
control_torrent Pause / resume / remove by ID
search_library Search local media
browse_library Browse by category
get_show_episodes All seasons and episodes for a show
get_recent Recently added files
rescan_library Trigger directory rescan
get_config View server config
update_config Change media dirs, client settings

Supported Formats

Video: .mp4 .mkv .avi .mov .wmv .flv .webm .m4v .mpg .mpeg .ts .vob

Subtitles: .srt .vtt .ass .ssa .sub


Stack

  • Backend: Node.js + Express (zero dependencies beyond npm packages)
  • Frontend: Vanilla HTML/CSS/JS — no build step, no framework
  • Windows App: C# WPF + WebView2 + WinForms NotifyIcon (.NET 8, self-contained)
  • AI: Anthropic Claude (Haiku) via API
  • No database — filesystem is the source of truth

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors