Random Acts of Music
Try it out here: https://www.randomactsofmusic.com/
After a cosy retreat to mums for Christmas, I was in Limbo.
The week between Christmas and New Years is a global phenomon. Time seems to pass differently, and no one quite knows what to do with themselves.
My mate (George) and I decided to use this free time to take on a project together — and we challenged ourselves to do it in one weekend.
The product of this challenge was Random Acts of Music, an online chatroom for music lovers.
How We Built It
We split the work into two parts:
- Frontend, which George handled
- Backend, handled by yours truly
Our frontend is built in React using the Next framework. The backend is very simple with no persisting data storage, just a simple HTTP server that accepts websocket connections using SocketIO.
George used the Spotify API to allow users to search and send songs directly within the platform. The nice thing is Spotify allows you to play entire songs using their IFrame if you’re already signed in to Spotify on your browser. And if you’re not you get a 30 second preview.
Interesting Thoughts
The paradox of launching a social app:
The core feature of this app was an anonymous random chat, where users are paired with strangers. But this presented a fundamental challenge—one that many social apps face: How do you get started?
The app’s success depends entirely on people already using it. But what happens to the first visitors? If no one else is online, they leave. And if every new user encounters an empty platform, the cycle continues. The result? A paradox: where nobody uses the app because nobody else is.
To break this loop, we introduced a persistent public chat. This ensured that even when no one was available for random pairing, users could still engage, see activity, and feel like the app was alive—encouraging them to stay and return.
Having an “identity” in anonymous chatrooms:
We wanted the site to be completely frictionless — no sign-ups, no payments, just instant access. However, when we introduced the public chat, we faced a new challenge: how do you know who’s talking?
Users needed some form of identity, especially if they returned to the chat regularly. At the same time, we wanted to prevent them from choosing their own usernames to avoid impersonation or abuse.
Our solution: When a user first visits the site, a session token is stored in their browser. This token is linked to a randomly generated username on the server, ensuring consistency without requiring registration.
Conclusion
George and I are both passionate about music — we even make our own — so this project was a lot of fun to build. We went into it with no expectations, just the simple goal of getting an MVP done in a weekend. And of course, working on something with a friend always makes the process more enjoyable.
For now, we’re not sure if we’ll continue developing the platform unless we come up with new ways to keep it engaging, even when few people are online.
My vision would be to create a safe online space where anyone can hang out with like-minded people whenever they feel bored, alone, or just want to discover some new music!
Whether that vision comes to life, time will tell. Right now, I’m in my final term of university and focused on graduating. Perhaps there will be a small window of opportunity before I begin my career in tech.
— Vince
Try out Random Acts of Music here: https://www.randomactsofmusic.com/