A movie and TV streaming app for web, Android, and iOS.
- Browse, search, and filter movies and TV shows (data from TMDB).
- Watch in a custom HLS player with subtitles, quality select, and auto-sync.
- Play streams from Vidcore, Vidsu, Vidme, and Vidru. Vidcore needs the optional browser resolver.
- Cast with Google Cast and AirPlay.
- English and French interfaces.
- Expo mobile app for Android and iOS.
Home: auto-rotating hero with title logo, TMDB and Rotten Tomatoes scores, certification, and a pause control, followed by trending carousels.
Movie detail: poster, title logo, TMDB and Rotten Tomatoes scores, certification, runtime, release date, watchlist button.
TV detail: season and episode counts alongside the same ratings, certification, and first air date.
Search: fuzzy, year-aware results with All / Movies / TV Shows filters.
Player: custom controls with seek, 10-second skips, volume, crop, picture-in-picture, fullscreen, and quality.
Subtitles: pick a track, change the delay, or auto-sync the file to the audio.
| Home | Movie | TV | Search | Player |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
Posters, backdrops, and logos in these screenshots come from TMDB.
-
Install Bun.
-
Create
.env.local:TMDB_API_KEY=your_key OMDB_API_KEY=your_key # optional: Rotten Tomatoes scores -
Install and run:
bun install bun dev
-
Open http://localhost:3000.
Subtitle auto-sync needs ffmpeg on the server. The Docker image includes it.
cp apps/mobile/.env.example apps/mobile/.env
bun run mobile:startFollow the deployment policy.
Build every deployment from a tagged commit.
Run node scripts/verify-deployment.mjs https://binje.duckdns.org after each deployment.
Operator action required: delete the v1.binje.duckdns.org and v2.binje.duckdns.org DuckDNS records, or put both deployments behind authentication.
Only the production host may serve a public build.
Watch history stays in your browser's localStorage. No tracking and no analytics.
MIT










