Creating a Room
Creating a room is simple and requires only your name:Enter Your Name
Provide a display name (2-50 characters). This will be shown to other participants.
Names can contain letters, numbers, spaces, and basic punctuation (- _ . ! ?)
Room Generated
The system generates a unique 6-character room ID (e.g.,
A3X9K2). This ID is:- Random: Generated using base36 encoding for maximum randomness
- Uppercase: Easier to read and share
- Unique: Collision-resistant across the platform
Host Token
When you create a room, you receive a secret host token:- Purpose: Authenticates you as the original room creator
- Storage: Session storage (cleared when tab closes)
- Security: Required to rejoin as host if you leave and return
Joining a Room
Guests can join existing rooms in two ways:- Via Room ID
- Via Direct Link
Name Validation
Names must meet these requirements:- Length: 2-50 characters
- Characters: Letters, numbers, spaces, and
- _ . ! ? - Uniqueness: Not already taken by another participant
- Not Reserved: Cannot use the host’s name unless you have the host token
Room Roles
Each room has two types of participants:Host
Privileges:
- Control video playback (play, pause, seek)
- Change videos
- Promote guests to host
- Send chat messages
- Multiple hosts are supported
- Original creator has host token for re-entry
Guest
Privileges:
- View synchronized video
- Send chat messages
- See typing indicators
- Cannot control playback
- Cannot change videos
- Can request promotion from hosts
Room Persistence
Rooms are stored in Redis with automatic expiration:Storage Details
Redis Schema
Redis Schema
Each room is stored as a JSON object with a key pattern:The room object contains:
id: Room IDhostId: Current primary host’s user IDhostName: Original creator’s namehostToken: Secret token for host re-authenticationvideoType: Current video type (“youtube” or null)videoUrl: Current video URL (if set)videoState: Playback state (time, playing status, duration)users: Array of current participantscreatedAt: Room creation timestamp
Active Rooms Set
Active Rooms Set
A Redis set tracks all active rooms:This allows efficient cleanup and room enumeration.
Expiration
Rooms automatically expire after 24 hours (86,400 seconds). This TTL is refreshed on every room update.
- Time-to-Live: 24 hours from creation or last update
- Auto-Cleanup: Redis automatically removes expired keys
- Grace Period: No grace period - after 24 hours, the room is gone
Room Closure
Rooms can close in two scenarios:Last Host Leaves
When the final host leaves or disconnects:All Users Leave
If every participant (host and guests) leaves:- Room is deleted from Redis
- All associated data (chat, video state) is removed
- Room ID becomes available for reuse
Multiple Hosts
Watch N Chill supports multiple simultaneous hosts:Promoting Guests
Hosts can promote any guest to host status:Multiple Host Behavior
Shared Control
All hosts can control playback simultaneously. Last action wins.
Independent Sync
Each host sends periodic sync checks every 5 seconds.
No Conflicts
The system doesn’t enforce “who’s in control” - collaboration is expected.
Equal Privileges
All hosts have identical permissions, including promoting others.
Sharing Your Room
Share your room with friends using multiple methods:Copy Room ID
Click the “Copy Room ID” button in the room header to copy the 6-character code to your clipboard.Share Link
Click the “Share” button to:- Use native share dialog (mobile)
- Copy full URL to clipboard (desktop)
Manual Sharing
Simply tell your friends the 6-character room ID and they can enter it on the homepage.Room Limitations
Current Limitations
- Maximum room duration: 24 hours
- No room passwords or access control
- No persistent room URLs (expires after 24h)
- No room customization (themes, names)
- Anyone with the room ID can join
Best Practices
Promote Co-Hosts
Promote trusted friends to host early in case you disconnect.
Share Responsibly
Only share room IDs with people you want in your watch party.
Plan Duration
Rooms expire after 24 hours - plan longer watch sessions accordingly.
Save Room ID
Keep your room ID handy if you need to rejoin after disconnecting.
Troubleshooting
Can’t Join Room
“Room not found” error:- Room may have expired (24-hour limit)
- Room ID might be incorrect (check for typos)
- Host might have left, closing the room
Lost Host Status
Joined as guest instead of host:- Your session storage was cleared
- You’re on a different device
- Your browser restarted
Name Already Taken
“Name already taken” error:- Someone else in the room has that name
- Choose a different name to join
- If it’s you on a different device, the system sees it as a different user