The dosya.dev app for Apple TV and Android TV. Sign in with a QR code from your phone, then browse and play your photos and videos on the big screen: Home, Photos, Videos, Folders, Favourites, Smart Search, slideshows and a video player that remembers where you stopped.
A TV is a shared screen, so it gets a read-only sign-in: it can view your photos and videos, and it can't change or delete anything.
Built with Expo and React Native for TV
(react-native is aliased to react-native-tvos). One codebase builds both
platforms. The app is translated into 40 languages, including Arabic, Hebrew
and Persian with a right-to-left layout.
- Node 22
- For Apple TV: Xcode with the tvOS SDK and a tvOS simulator, and CocoaPods
- For Android TV: Android Studio with an Android TV or Google TV emulator
npm installThis app has its own package.json and its own node_modules. It is not
part of an npm workspace.
The native ios/ and android/ folders are generated, not committed.
Generate them for TV first:
npm run prebuild:tvThen run on a simulator or emulator:
npm run ios # Apple TV simulator
npm run android # Android TV emulatorThe app talks to https://api.dosya.dev by default. Set
DOSYA_API_BASE_URL to point it at another API.
If pod install fails with an encoding error, run it with
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8.
npm run typecheck
npm testThe tests cover the platform-neutral core (sign-in, sessions, resume, error messages) and the translator.
src/core: API client, device sign-in, sessions, formatting. No React Native imports, so it runs under plain Node in the tests.src/ui: screens, components, navigation and remote handling.src/i18n: the translator, the 40 message catalogs and the language list.
Dosya Source Available License. You can read, build and run the source; see the license for what you may and may not do with it.