Nexus Lounge
Watch together, wherever you are.
Voice, chat, synced YouTube, Twitch and Kick, and screen sharing in one shared room. Installs as an app on phones and desktops.
Live at nexuslounge.party.
I built it so my friends and I could watch League of Legends Worlds together, but it's general purpose: sports, premieres, VODs, movie nights.
Screenshots
| Phone | Phone: streams | Phone: landscape |
|---|
| | |
| Collapsed side panel | People | Room settings |
|---|
| | |
| Playlists and queue | Landscape with chat open |
|---|
| |
| Choose where video plays (TV connected) | Phone player bar: More menu | Account |
|---|
| | |
What you can do
Rooms and people
- Create a named room and share the invite link. Sign in with Discord, or join as a guest.
- Guests wait in a lobby until the room owner lets them in. The owner can also remove anyone, who then can't rejoin.
- Room settings (owner): room name, guest policy (ask / let in / not allowed), lock the room, who may share their screen, auto-play next, and reactions on or off.
- Optional room password.
- Roles: the owner can make other Discord users controllers, who can pick what the room watches, control playback, reorder the queue, put a screen share on air, and stop someone's screen share.
Watching
- Paste any YouTube, Twitch or Kick link (video, live stream, channel, past broadcast; Kick channels only) to add it to the room's stream list.
- Queue: an "Up next" list that everyone sees. Signed-in people add videos to the end or to the front ("Play next"); controllers reorder, play now, remove and clear. When a video ends, the next one in the queue starts (a controller needs to be watching). Live streams can't be queued, and with an empty queue the library order is used.
- Playlists: paste a YouTube playlist link and it shows up as one expandable item. Add the whole playlist to the queue, or tick just the videos you want.
- Every stream has its own shared clock, so some people can watch one stream while others watch another, and anyone can switch without losing sync. The owner or a controller can put one stream "on air" for everyone; guests always follow it.
- Playback stays in sync across everyone's devices, with smooth correction instead of constant skipping (on-demand videos; live streams are handled differently, see below).
- Live YouTube streams aren't continuously synced (everyone's live edge differs and a player can only play what it buffered): play and pause are shared, and each viewer jumps once to their own live edge when they join or when a controller acts. Go live from a controller sends everyone to the live edge; for everyone else it jumps their own player to theirs.
- Several people can screen share at once, each with audio. Everyone picks which share to watch, and the owner or a controller can put one on air. A notice appears when someone starts sharing.
- Your own video files: pick a video from your computer and watch it together. Friends who don't have the file watch a live feed from your browser (no upload: the video never touches the server). Friends who do have the same file can pick it and play their own copy, synced to the room in full quality. Wrong files are refused (a fingerprint of the size and a few slices must match). Chrome and Edge remember the file across a refresh. Sharing the feed works from Chrome, Edge, Firefox and Safari on a computer; TVs always use the feed.
- Stremio, magnets and video links: the host and controllers can add a magnet link, a Stremio stream link or a video link (including the signed links debrid and addon services give you). Torrents play through the Stremio app on your computer (
127.0.0.1:11470, or any address you set); links play straight in the browser when they can, and through Stremio when they can't (insecure http redirects, formats your browser can't decode, services that block browsers), which converts them to HLS that plays everywhere. Matroska plays as it is on Chrome and Edge, and HEVC/AC3/E-AC3 are used directly where your browser decodes them. Friends without Stremio watch a live feed from the owner's browser. Friends with Stremio tap to download the torrent themselves, in sync, with no load on the owner, or paste their own link or magnet to the same video (the size and length must match). Links stay in the owner's tab and are never sent to the room or the server, expired ones can be replaced in place, and error clips from link services are flagged. Chrome and Edge ask once to let the site reach devices on your network. Subtitles (tracks inside the video, files that came with a torrent, a file from your computer, or a search by title through OpenSubtitles) are chosen per person.
This is the beginning of the README. Read the rest at the original. Read the full README ↗