Skip to content

Party mode — shared room with multi-device queue #34

@LoggeL

Description

@LoggeL

Problem

Karaoke is a group activity but MelodAI is currently single-user. At a party, one person controls the laptop while others shout requests. There's no way for guests to browse songs or add to the queue from their phones.

Proposal

A party/room mode where one device is the "host" (playing audio on speakers) and other devices can join as "guests" to browse, search, and add songs to the shared queue.

Host

  • Creates a room (generates a short join code, e.g. ABCD or a QR code)
  • Plays audio and displays lyrics on the main screen (TV/projector)
  • Has full playback control (play/pause, skip, remove)
  • Sees who's in the room

Guests (phone/tablet)

  • Join via code or QR scan — no account required (or optional)
  • Can search songs and add to the shared queue
  • Can upvote/downvote queued songs (affects order)
  • See current playing song and queue, but no playback control
  • Optional: "next singer" assignment per queued song

Technical Approach

  • WebSocket (Socket.IO or native WS) for real-time sync
  • Room state lives on the Flask backend in-memory (or Redis for persistence)
  • Events: queue_add, queue_remove, queue_reorder, playback_update, room_join, room_leave
  • Guest UI: lightweight mobile-optimized page at /party/{code}
  • No audio streaming needed — guests only see metadata + queue

MVP Scope

  1. Room creation with join code
  2. Guest search + add to queue
  3. Real-time queue sync
  4. Host-only playback control

Future

  • QR code display on host screen
  • Voting/priority system
  • "Up next" singer assignment
  • Song request limits per guest

Complexity

High. Requires WebSocket infrastructure, room state management, and a separate guest UI. But this is the killer differentiating feature for a karaoke app.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions