Extract hardcoded strings (23 sites in 9 platform-specific files): - AppUpdaterPlatform stubs (iOS, Desktop, Android Playstore) - PluginRepository stubs (iOS App Store, Android Playstore) + main fullCommonMain - AddonRepository.normalizeManifestUrl require message - CollectionEditorRepository dynamic titles (TMDB Collection/List/Production/ Network/Person/Director + Trakt List fallback) - ExternalPlayerPlatform.android.kt (Android system player label) New keys added (2): - collections_editor_trakt_list_title_format (Trakt List %1$s) - external_player_android_system (Android system player) Reused existing keys (8): updates_not_available, plugins_error_unavailable_build, plugins_error_enter_valid_url, plugins_error_provider_not_found, plugins_error_enter_repo_url, addons_error_enter_url, and 6 tmdb_*_title_format. Audit FR quality (1719 strings) — 26 corrections + 68 apostrophe normalizations: - Fix 3 residual vouvoiement (Controlez/Enrichissez/Programmez → tu) - Fix 2 imperative conjugations (Parcoure→Parcours, Inclut→Inclus) - Fix 2 placeholder type bugs (%1$d→%1$s where String input) - Fix 1 trailing space, 1 double negation calque - Harmonize "Plus comme ceci"→"À voir aussi", flux→stream, Jun/Jul→Juin/Juil., rate limit "debit"→"requetes", "Crédits de personne TMDB"→"Crédits TMDB de la personne" - Improve 7 anglicisms (en focus→focus sur, indice→indication UI, etc.) - Normalize 68 lines: ' → ’ typographic (192 typo / 0 droite) Parity EN ↔ FR: 1719 strings, 2 plurals. Builds: composeApp:compileFullDebugKotlinAndroid + compilePlaystoreDebugKotlinAndroid both SUCCESSFUL. xmllint OK on both XML files. Merged origin/cmp-rewrite to integrate PR #1173 (release alert badge + dropped-show filtering for CW section), resolving conflicts in strings.xml EN+FR. |
||
|---|---|---|
| .github | ||
| composeApp | ||
| Docs/Stremio addons refer | ||
| gradle | ||
| iosApp | ||
| libass-android@c10b71ab8b | ||
| MPVKit@97923266e4 | ||
| scripts | ||
| stremio-community-v5@da0783dfd8 | ||
| vendor | ||
| .gitignore | ||
| .gitmodules | ||
| build.gradle.kts | ||
| CONTRIBUTING.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| settings.gradle.kts | ||
A modern media hub for Android and iOS built with Kotlin Multiplatform and Compose Multiplatform.
Stremio addon ecosystem • Cross-platform
About
Nuvio is the current Kotlin Multiplatform rewrite of the original React Native app. It delivers a shared Compose UI for Android and iOS while keeping the playback-focused experience, collection tools, watch progress flows, downloads, and Stremio addon ecosystem integration that shaped the earlier app.
The mobile app is built from a single shared codebase in composeApp, with native platform entry points for Android and iOS.
Installation
Android
Download the latest Android build from GitHub Releases.
iOS
Development
git clone https://github.com/NuvioMedia/NuvioMobile.git
cd NuvioMobile
./scripts/run-mobile.sh android
# or
./scripts/run-mobile.sh ios
Project Structure
composeApp/contains the shared Kotlin Multiplatform and Compose Multiplatform app code.composeApp/src/commonMain/contains shared UI, features, repositories, and platform-agnostic logic.composeApp/src/androidMain/contains Android-specific integrations.composeApp/src/iosMain/contains iOS-specific integrations.iosApp/contains the native Xcode project and iOS entry point.
Useful commands:
./gradlew :composeApp:assembleDebug
./gradlew :composeApp:compileKotlinIosSimulatorArm64
./scripts/build-distribution.sh
Versioning is driven from iosApp/Configuration/Version.xcconfig, which is used as the shared source of truth for both iOS and Android builds.
Legal & DMCA
Nuvio functions solely as a client-side interface for browsing metadata and playing media provided by user-installed extensions and/or user-provided sources. It is intended for content the user owns or is otherwise authorized to access.
Nuvio is not affiliated with any third-party extensions, catalogs, sources, or content providers. It does not host, store, or distribute any media content.
For comprehensive legal information, including our full disclaimer, third-party extension policy, and DMCA/Copyright information, please visit our Legal & Disclaimer Page.
Built With
- Kotlin Multiplatform
- Compose Multiplatform
- Kotlin
- AndroidX Media3
- AVFoundation and native iOS integrations