Mira
Cross-platform streaming app for movies and TV shows
A media streaming application built with React Native and Expo. Search movies and TV shows via TMDB, fetch torrent sources via Torrentio, and stream content through Real-Debrid — all from a single, unified interface across Android, iOS, and Web.
Screenshots

Highlights
- Search & Discover — Browse movies and TV shows with metadata from TMDB
- Stream via Real-Debrid — High-quality streaming through debrid service integration
- Track Your Progress — Automatic watch progress tracking across episodes
- Release Calendar — Track upcoming movie and TV releases
- Full Player Controls — Gestures for seek, volume, brightness, plus screen lock
- Offline Support — Download content for offline viewing
- Cross-Platform — Works on Android, iOS, and Web from a single codebase
Overview
Mira bridges the gap between content discovery and streaming. It combines TMDB’s extensive movie and TV database with Torrentio’s source aggregation and Real-Debrid’s premium streaming capabilities. The result is a seamless experience where you can search for any title, select your preferred source quality and language, and start streaming immediately.
The app handles the complexity of managing multiple services behind a clean, intuitive interface — complete with watch history, favorites, and personalized streaming preferences.
Author
Created by Yannick Herrero
Tech Stack
| Component | Tool | Description |
|---|---|---|
| Framework | Expo v54 + React Native | Cross-platform mobile/web development |
| Routing | Expo Router | File-based navigation |
| Styling | NativeWind v4 | Tailwind CSS for React Native |
| Database | Expo SQLite + Drizzle ORM | Local storage with sql.js for web |
| State | Zustand | Lightweight global state management |
| Video | VLC Media Player | Hardware-accelerated playback |
| Metadata | TMDB API | Movie and TV show information |
| Sources | Torrentio | Torrent source aggregation |
| Streaming | Real-Debrid | Premium debrid service |
Features
Streaming & Sources
- Stream content via Real-Debrid integration
- Source filtering by quality (4K, 1080p, 720p, etc.)
- Language filters for stream sources
- Multiple audio track support
- Subtitle support with language selection
Player Controls
- Gesture controls for seek, volume, and brightness
- Screen lock during playback
- Streaming preferences with priority ordering
- Preferred audio and subtitle language settings
Library & Progress
- Automatic watch progress tracking
- Resume playback across episodes
- Manage watchlist and favorites
- Release calendar for upcoming movies and episodes
- Download content for offline viewing
Appearance
- Dark and light mode support
- Clean, intuitive interface
Repository Structure
mira/
├── app/ # Expo Router pages (file-based routing)
│ ├── (tabs)/ # Tab navigation (home, search, library, settings)
│ ├── media/[id].tsx # Media detail screen
│ └── player.tsx # Video player screen
├── components/
│ ├── media/ # Media cards, grids, episode pickers
│ ├── player/ # VLC player, controls, gestures
│ └── ui/ # Reusable UI components
├── lib/
│ └── api/ # API clients (TMDB, Real-Debrid, Torrentio)
├── db/ # Database schema and providers
├── stores/ # Zustand stores
└── hooks/ # Custom React hooks
Installation
Prerequisites
- Node.js 20+ and Bun
- iOS Simulator (for iOS development)
- Android Studio Emulator (for Android development)
Setup
- Clone the repository:
git clone https://github.com/YannickHerrero/mira.git
cd mira
- Install dependencies:
bun install
- Configure API keys in the app settings:
- TMDB API key — Get one at themoviedb.org
- Real-Debrid API key — Create an account at real-debrid.com
Running
# Start Expo development server
bun run dev
# Run on Android
bun run android
# Run on iOS
bun run ios
# Build for web
bun run build:web
Notes
- API Keys Required: Both TMDB and Real-Debrid API keys must be configured in the app settings before streaming
- Real-Debrid Subscription: A premium Real-Debrid subscription is required for streaming functionality
- Web Platform: Uses sql.js for SQLite compatibility in browsers
Feedback
If you have questions or suggestions, feel free to open an issue.
License
This project is licensed under the MIT License - see the LICENSE file for details.