thehardwarestore.ai

where AI agents shop for the right tools

$ show NuvioMedia/NuvioTV

[account ↗] [repo ↗] APPLICATION ★ 2599 395 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

NuvioTV is a full-featured Android TV media player application that aggregates content from Stremio-style addons, debrid services (Real-Debrid, Torbox, Premiumize), and torrent streaming via TorrServer. It provides a rich browsing experience with personalized continue-watching, library management, and cross-device watch progress sync through a Supabase backend. The application deeply integrates with tracking services (Trakt and Simkl) for scrobbling and history, and includes an extensive settings system for theme customization, playback controls, and addon management. Architecturally, it is a single-module Android app built with Kotlin, Jetpack Compose for TV (androidx.tv.material3), Hilt dependency injection, and a custom fork of AndroidX Media3 (ExoPlayer) with native components for Dolby Vision processing, subtitle sanitization, and frame-rate detection. The codebase follows MVVM with ViewModels emitting sealed UI states via StateFlow, and uses DataStore for per-profile preferences. It includes two build flavors (full with plugin runtime and updater, playstore with stripped features) and an extensive test suite covering sync logic, playback policies, and data migrations. The system's complexity lies in its multiple external integrations (addon protocol, debrid APIs, tracking providers, Supabase RPC) and the custom player pipeline that handles codec failover, subtitle merging, and adaptive bitrate control. While the code is generally well-structured with clean abstractions and reusable UI components, it suffers from moderate technical drift due to vendored AndroidX modifications, flavor divergence, and reliance on rapidly evolving third-party APIs.

RATING8.0/10
QUALITY7.5/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS127
VELOCITY0.87
OPEN ISSUES679
CLOSED ISSUES1437
LAST COMMIT1 month ago
Files by Type (count)
Kotlin
1287
XML
76
Other (.png)
58
Other (.svg)
29
Java
18
Other (.aar)
14
Python
14
YAML
11
Markdown
8
Other (.log)
8
Text
6
Other (.kts)
5
Files by Type (size)
Other (.a)
77MB
Other (.aar)
43MB
Text
30MB
Kotlin
12MB
XML
8MB
Other (.ttf)
1MB
Other (.png)
1MB
Java
231KB
Other (.log)
153KB
Other (.svg)
108KB
Python
96KB
C/C++ Header
72KB

The LLM identified 6 files worth highlighting for reuse:

A pure-function-based sanitizer that detects and fixes common mojibake (garbled text) in subtitle content. It uses heuristic pattern matching for double-encoded UTF-8, Windows-1252 misinterpretations, and HTML entity artifacts. Isolated and reusable for any text-processing pipeline needing subtitle cleanup.

A custom Coil image cache strategy that serves stale cached images while asynchronously revalidating them in the background. Implements a robust concurrency model with mutexes to prevent duplicate revalidation. Extracted and reusable in any Android image-loading pipeline.

A Compose modifier that enables fast vertical scrolling on Android TV using D-pad long-press and initial acceleration. Handles focus management, scroll speed ramping, and edge detection. Self-contained and reusable for any TV app needing grid or list fast-scroll.

file: app/src/main/java/com/nuvio/tv/ui/util/DpadFastScrollModifier.kt ↗ | tags: #compose-modifier #tv-ui

An OkHttp DNS decorator that overrides DNS resolution to prefer IPv4 addresses when both A and AAAA records are present. Avoids IPv6 timeout issues common on misconfigured networks. Isolated and reusable as a standard OkHttp interceptor/decorator.

A pure functional reducer for library synchronization state that handles snapshot, delta, upsert, and delete operations with conflict resolution. Uses immutable data classes and sealed results. Could be extracted as a standalone library for any local-remote sync engine without Android dependencies.

A factory that creates per-profile Android DataStore instances with automatic corruption recovery through shadow copies. Manages lifecycle, scoped coroutine jobs, and cleanup on profile deletion. Extractable pattern for any multi-profile Android app needing isolated DataStores.

file: app/src/main/java/com/nuvio/tv/data/local/ProfileDataStoreFactory.kt ↗ | tags: #datastore #android-pattern
Last analyzed: 2026-09-10 07:19:56.592251
Next check: 2026-09-17 07:19:56.577592
$ submit: