Host’s phone · tap a song

Group Sing Along

Share
Search for a songSearch

Lyrics:

Waiting for the conductor to select a song...

Singer’s phone

Group Sing Along

Share

Lyrics:

Waiting for the conductor to select a song...

Group Sing Along • 2025

Lyrics everyone in the room sees in real time

Overview

Group Sing Along lets one person pick a song and opens its lyrics on every phone in the room. I designed and built it for family sing-alongs, where not everyone knows the words and there are never enough songbooks.

Anyone can join with a 4-letter code, with no account and nothing to download. It’s been live at groupsingalong.com since January 2025, and in December 2025 I built an iOS version.

Role
Design and build, solo
Timeline
December 2024 to January 2026
Platforms
Web app (live), iOS app (built, not released)

Problem

How might a whole room sing the same song without crowding around one phone?

I wrote the problem down before I built anything: “In large group gatherings, like family sing-alongs, not everyone knows the lyrics to the songs and physical songbooks are often insufficient in number or outdated.” The usual fixes are passing 1 phone around or printing lyric sheets.

A sing-along room has 4 things a design has to handle:

  • Every age

    Sing-alongs mix every age, so there’s nothing to sign up for or install.

  • One leader

    Someone has to pick the song, or every phone ends up on a different one.

  • People arrive late

    Someone who joins halfway through should land on the song that’s already playing.

  • Small screens

    People are singing, not reading, so each phone needs its own text size.

Design

One host picks, and every phone follows.

The person who creates the group is the host. They search for a song, tap it, and every phone in the room opens the same lyrics. At first, singers only saw the lyrics and their own text size buttons. When a new phone joins, it asks the host’s phone for the current song, so late joiners never wait for the next one. The demo at the top is the January 2025 room, rebuilt from its code.

Joining: a code, a link or a QR code

Group codes started at 5 letters. I cut them to 4 on January 12, 2025, and later made them work in any case. The host shares from 1 screen with 2 ways in: a text with the link, and a QR code for people in the same room. In the first version the QR code was big and the message button was small. Later that month I made them 2 equal targets.

  • The first share screen: a large QR code with a small round Message button beside it, and Group Code: WXYZ below.

    January 7, 2025

  • The revised share screen: a large round Message button and a QR code of the same size side by side, labeled Message and Scan QR Code.

    January 30, 2025

The share screen, before and after. Rebuilt from the code at each commit with a test room.

The room, 4 versions

The first room was a plain page; my commit called it “UI option 1.” By the end of January it was a card with a violet header, album art and − / + text size on every phone. In March 2025 the header started showing how many people were in the room, and a row told you whether you were the host. I also renamed the “conductor” to the “host” so the word matched everywhere.

  • January 7, 2025: a textured banner title, a plain search box, the song name in one line and lyrics in plain text.

    Jan 2025

  • January 30, 2025: a violet gradient header with a Share button, a search box, album art beside Jingle Bells, and lyrics with − and + buttons.

    Late Jan 2025

  • March 28, 2025: the header shows 5 members, and a row reads Role: Host and Group Code: WXYZ above the search box and lyrics.

    Mar 2025

  • 2026: the song row and a large View Lyrics button, with Lyrics provided by AZLyrics below it.

    2026

The host’s room at 4 commits, rebuilt from the code with a public-domain song.

Song requests

In December 2025 I let singers ask for songs without taking control. They search and tap Request. The host gets 1 list, with repeats merged into “Requested 3x,” and taps Accept to play one. A confirmation screen replaced the browser alert that used to say a request was sent.

  • The host’s Song Requests list with a count of 2: Auld Lang Syne, and Feliz Navidad marked Requested 3x, each with an Accept button.

    Host

  • A singer’s Request Sent! screen with a violet check mark and the song’s title and artist.

    Singer

Requests, from both sides. Rebuilt from the code with sample requests.

Lyrics moved off the page

In January 2026 the lyrics stopped being text in the app. On the web, each phone now opens the song’s page on a lyrics site, in a window that opens by itself when the host changes songs. On iOS it opens in Safari’s Reader view.

In progress: Why the lyrics moved

Add the reason: licensing, reliability or something else. Since the change, the − / + buttons on the web no longer resize the lyrics.

Landing page

From 2 buttons to a page that explains itself.

The first landing page was the name and 2 buttons. In March 2025 I redesigned it to explain the idea before asking anyone to start a group: a serif headline, Create and Join side by side, and a sample lyrics card. The card is an illustration; the app shows the whole song, not 1 highlighted line.

January 7, 2025

The first landing page: the name Group Sing Along, a microphone icon and 2 stacked violet buttons, Create Group and Join Group.

January 30, 2025

The landing page with the headline Make Group Singing Easy and Fun above the same 2 buttons, and a footer with an Install link.

March 28, 2025

The redesigned landing page: a serif headline, Create Group and Join Group side by side, and a sample lyrics card on the right.
The landing page’s first screen, rebuilt from the code at each commit.

In progress: Landing page copy

The live page still has 3 placeholder testimonials and “Join thousands of families.” Swap in real quotes or take them down before linking it from here.

iOS app

Bigger rooms became the paid tier.

In December 2025 I built an iOS version in Expo that joins the same rooms as the web app, so iPhones and browsers can sing together. Free rooms hold 3 people. Plus holds 10 for $1.99 a month or $20 a year, and Party and a 24-hour Event Pass hold 25. Only the host pays, and everyone else joins free.

2 details are about real rooms. Text size scales the whole screen from 0.625× to 2×, not just the lyrics. And when the host’s phone goes to the background for a screenshot or a text, the room waits 10 seconds before ending, so nobody else loses the song.

  • The iOS room: a gradient header with 2 members, Role: Host, a search box, Song Requests, Jingle Bells, and a View Lyrics on Genius button above Share and Leave Group.

    Room

  • The iOS paywall titled Keep everyone in sync: free groups support up to 3 people, with the Plus plan at $20 a year.

    Paywall

  • The iOS pricing screen titled Sing together. No confusion., with the Plus plan for up to 10 people.

    Pricing

The iOS app, rendered from its code in a browser, so fonts and spacing differ a little from an iPhone.

In progress: Release

The app is built but not on the App Store. Add whether it went to review and what’s next. The web app has had the same 3-person limit since December 2025, with no way to upgrade on the web.

Results

The first version took about 2 weeks: my first commit was December 27, 2024, and search worked in production on January 6, 2025. It has been live ever since, and it became an installable web app in February 2025.

In progress: Usage

Add the number of people who use it, with its source and date (Google Analytics or Vercel Analytics), and any real moment you saw it used. The homepage says about 155 active users; that number needs a source before it stays.

Reflection

This was the first thing I built for people in the same room. The hardest problem was people who joined mid-song and saw nothing until the host picked the next one. The fix was a small handshake: a new phone says hello, and the host’s phone sends the current song.

It also taught me to design for the people who aren’t in charge. Most of the room never touches search, so their screen has 1 job: show the words big enough to sing.

How I built it

Next.js and Tailwind with shadcn/ui on the web, Pusher for the live room, Deezer for search, and Expo for iOS. There’s no database: a room lasts as long as its host. The engineering side has the details.