A desktop application for analyzing and managing your media library quality across multiple media servers and local folders.
Totality connects to your media servers (Plex, Jellyfin, Emby, Kodi) and local folders to provide detailed quality analysis of your movies, TV shows, and music. It helps you identify items that could be upgraded to higher quality versions, tracks your collection completeness, and maintains a wishlist of media you want to acquire.
Track upgrades, incomplete collections, TV series, and music discographies at a glance.
See which movies you own in a franchise and which ones are missing.
Detailed quality breakdown for each item — resolution, bitrate, codec, audio format, and scoring.
Track owned and missing episodes across all seasons with TMDB integration.
Browse artists, albums, and tracks with MusicBrainz discography completeness.
Configure quality thresholds, API keys, monitoring intervals, and appearance.
A wide variety of dark and light themes to match your style.
Connect to multiple media sources simultaneously:
- Plex - Full support with OAuth authentication
- Jellyfin - Full support with server discovery (UDP broadcast)
- Emby - Full support with server discovery
- Kodi - Local database access and MySQL backend support
- Local Folders - Direct folder scanning with FFprobe analysis and TMDB/MusicBrainz metadata lookup
Automatically analyzes your movies and TV shows for:
- Resolution - SD, 720p, 1080p, 4K with quality tier scoring
- HDR Format - Dolby Vision, HDR10, HDR10+, HLG
- Color Depth - 8-bit, 10-bit, 12-bit
- Video Bitrate - With codec efficiency multipliers (H.264, HEVC, AV1, VP9)
- Audio Format - Dolby Atmos, DTS:X, TrueHD, DTS-HD MA, and more
- Quality Issues - Identifies low bitrate, missing HDR, suboptimal audio
Items are scored within tiers (SD/720p/1080p/4K) as LOW, MEDIUM, or HIGH based on:
- Video bitrate relative to resolution
- Codec efficiency (AV1 > HEVC > H.264)
- Audio codec quality ranking
Analyzes audio tracks with a four-tier quality rating system:
| Tier | Description | Criteria |
|---|---|---|
| Ultra | Hi-Res Lossless | Lossless codec (FLAC/ALAC/WAV) with 24-bit+ depth OR >48kHz sample rate |
| High | CD-Quality Lossless | Lossless codec at 16-bit / 44.1-48kHz |
| Medium | Transparent Lossy | MP3 ≥160 kbps or AAC ≥128 kbps |
| Low | Low Bitrate Lossy | MP3 <160 kbps or AAC <128 kbps |
- Shows missing episodes per season
- Displays series status (Returning, Ended, Canceled)
- Tracks overall collection completeness percentage
- Caches series IDs for efficient scanning
- Groups movies by franchise using TMDB's collection data
- Shows owned vs missing movies in collections
- Displays collection completion percentage
- Analyzes artist discographies
- Shows owned vs missing albums
- Tracks album completeness (missing tracks)
- Filters to digital/CD releases only (excludes vinyl-only releases)
- Supports EPs and singles tracking
Scan local media folders without a media server:
- FFprobe Integration - Extracts resolution, codecs, bitrate, HDR info, audio tracks
- Auto-download FFprobe - Downloads FFprobe binaries automatically on Windows
- Smart Filename Parsing - Extracts title, year, season/episode from filenames
- Embedded Metadata - Reads MKV/MP4 tags for accurate metadata
- TMDB Lookup - Fetches missing metadata from TMDB
- Extras Filtering - Automatically excludes featurettes, trailers, behind-the-scenes content
Track media you want to acquire:
- Add movies, TV shows, albums to your wishlist
- Set priority levels and add notes
- Search external stores (Amazon, iTunes, etc.) for purchase options
- Bulk operations support
Automatic library change detection:
- Polls enabled sources on configurable intervals
- Detects added, updated, and removed items
- Pauses during manual scans
- Real-time notifications of changes
Manage long-running operations:
- Queue multiple scan and analysis tasks
- Pause, resume, and cancel tasks
- Reorder task priority
- View task history (completed, failed, cancelled)
- Poster-based display with hover effects
- Adjustable grid scale (7 levels)
- Quality badges on items
- Compact list display
- Quality and status badges
- Sortable columns
- Quick navigation by first letter
- Special filter for non-alphabetic characters (#)
- Real-time search across all media types
- Searches titles, artists, and album names
- Credential Encryption - API keys and passwords encrypted at rest using OS-level encryption (Windows DPAPI, macOS Keychain, Linux libsecret)
- Context Isolation - Renderer process isolated from Node.js for security
# Clone the repository
git clone https://github.com/bbidwell85/totality.git
cd totality
# Install dependencies
npm install
# Start development mode
npm run electron:dev
# Build for production
npm run build- Click the + button in the sidebar under "Sources"
- Select your source type (Plex, Jellyfin, Emby, Kodi, or Local Folder)
- Follow the authentication/setup flow:
- Plex: Click "Sign in with Plex" to authenticate via browser
- Jellyfin/Emby: Enter server URL and credentials, or use auto-discovery
- Kodi: Select local database or enter MySQL connection details
- Local Folder: Browse to select folder path, choose library type (Movies/TV/Music)
- Select which libraries to scan
- Click the refresh icon next to a library in the sidebar
- Wait for the scan to complete
- Progress is shown in the sidebar and task queue
- Click the "Completeness" button in the toolbar
- Click "Analyze Series" or "Analyze Collections"
- Wait for the analysis to complete (requires TMDB API key)
- Navigate to the Music library
- Select an artist
- Click "Analyze Completeness" to check against MusicBrainz
- View missing albums and tracks
- Click on any item to open the details panel
- Quality badges show HDR format, resolution, audio format
- Quality issues are displayed in the header
- Click on any track in an album view
- A modal shows the quality tier and scoring criteria
- View your track's specs compared to the tier requirements
Required for movie/TV completeness analysis and local folder metadata:
- Go to Settings
- Enter your TMDB API key
- Save settings
The SQLite database is stored at:
- Windows:
%APPDATA%\totality\totality.db - macOS:
~/Library/Application Support/totality/totality.db - Linux:
~/.config/totality/totality.db
Auto-downloaded to (or manually place at):
- Windows:
%APPDATA%\totality\ffprobe\
| Shortcut | Action |
|---|---|
Ctrl/Cmd + F |
Focus search |
Escape |
Close modal/panel |
G |
Toggle grid view |
L |
Toggle list view |
src/
├── main/ # Electron main process
│ ├── services/ # Backend services (Database, API clients, analyzers)
│ ├── providers/ # Media server providers (Plex, Jellyfin, Emby, Kodi, Local)
│ ├── database/ # Schema and migrations
│ └── ipc/ # IPC handlers
├── preload/ # Preload scripts (IPC bridge)
└── renderer/ # React frontend
└── src/
├── components/ # React components
├── contexts/ # React contexts (Source, Wishlist, Toast, Navigation)
└── styles/ # CSS styles
npm run electron:dev # Start Vite + Electron together (recommended)
npm run build # TypeScript + Vite + Electron Builder
npm run lint # Run ESLint
npm run test # Run Vitest in watch mode
npm run test:run # Run all tests once
npm run test:coverage # Run tests with coverage- Electron 27 - Desktop framework
- React 18 - UI framework
- TypeScript - Type safety
- Vite 5 - Build tool
- Tailwind CSS - Styling
- SQL.js - SQLite database (in-memory with disk persistence)
- Axios - HTTP client
- Plex API - Media server with OAuth authentication
- Jellyfin API - Media server with UDP discovery
- Emby API - Media server
- TMDB API - Movie/TV metadata and collections (rate-limited: 40 req/s)
- MusicBrainz API - Music metadata and discographies (rate-limited: 1 req/s)
MIT License - See LICENSE file for details.






