Native macOS application

Karaoke Queue

Audience requests become an organised show queue, with matches from the host’s own karaoke collection.

Working local application

The idea

Keep the host focused on the show.

A host needs to see who is next, find the requested track and hand it to a player without repeatedly switching between forms and storage. Karaoke Queue joins those steps in a local-first Mac application.

Singers can use an existing Google Form. The host can also add requests manually, mark them complete and start or finish an independent show. The queue persists locally between launches.

How it works

A request has a clear route to playback.

  1. 1

    Audience request

    Collect singer, title and artist through a Google Form or a manual entry.

  2. 2

    Show queue

    Import responses and use their IDs to avoid repeated entries.

  3. 3

    Own library

    Match the request against the host’s configured karaoke collection.

  4. 4

    Player handoff

    Prepare the selected local file or paired CDG/audio files and drag them to a compatible player.

How it is built

Native controls, focused integrations.

Swift and SwiftUI provide the macOS application. A Google Forms API client imports responses using read-only OAuth scopes. WebDAV connects to the configured library folder, and a local index supports filename matching.

Queue state is stored as JSON in the application’s support folder. Google refresh credentials and the library password use macOS Keychain. Keeping show state local avoids requiring a separate hosted queue database for this workflow.

Design decisions

Fit the tools a host already uses.

Use an existing audience workflow.

A form means singers do not need a separate request application to join the queue.

Avoid duplicate requests.

Google response IDs identify previously imported entries, keeping periodic refreshes from duplicating the show order.

Make file handoff practical.

A prepared file can be dragged into a compatible player. Paired CDG/audio tracks are handled as a pair.

Limit access to what is needed.

The form integration requests read-only access. The library integration targets the configured folder, with credentials held outside the queue data.

Development & updates

Check the show, not just the import.

Useful validation covers new requests, repeated refreshes, manual entries, completed singers, restarting the application and preparing supported file formats. A host pilot can also check how the workflow behaves during a real session.

Public demonstrations focus on the host’s own authorised collection and the queue experience. Supported player/file combinations and customer OAuth setup are important parts of packaging the application for wider use.

What this demonstrates

A useful starting point for your project.

The same thinking can be applied to a different industry: understand the real workflow, connect the right systems and give people clear control over what happens next.

Your next project

What could we build for you?

Describe your users, the workflow and the systems it needs to connect. We’ll discuss a useful first version.

Discuss your idea