Skip to content

Vaux ‐ Original Plan

Violet Nguyen edited this page May 28, 2026 · 1 revision

How the Idea for the Virtual Jam Room Came to Be

This project actually started somewhere completely different.

Originally, I really wanted to build a terminal-based application. I’ve always liked the idea of software that runs entirely inside the terminal — lightweight, fast, and surprisingly immersive when done well. After discovering Python’s textual framework and seeing how modern TUIs could look almost like full desktop applications, I knew I wanted to build something around real-time interaction.

The challenge was figuring out what to build.

I didn’t want another generic CLI productivity tool or dashboard project. I wanted something social, interactive, and technically challenging enough to teach me concepts I hadn’t explored deeply before. Eventually I landed on the idea of a music sharing room.

The concept immediately felt interesting because it naturally introduced two things I wanted to learn:

  • Real-time synchronization
  • Socket.io and WebSocket communication

A shared music room sounds simple at first, but the more I thought about it, the more interesting the engineering became. If multiple people are listening together, everyone needs to stay synchronized. Users should be able to join a room, chat, queue songs, vote tracks up or down, and hear the same playback position at the same time.

That meant the project wasn’t just about playing music — it became a distributed state synchronization problem.

What made the idea even more compelling was realizing that I didn’t actually need to stream audio myself. The app could rely on platforms like YouTube for playback while my backend handled synchronization, room state, queue logic, and communication between clients.

That shifted the project from “music app” to “real-time systems project disguised as a music app.”

As I planned the architecture further, another idea emerged that ended up becoming one of my favorite parts of the project: multiple clients sharing the same backend.

Instead of treating the terminal application as the entire project, I realized I could build a web client alongside it. Both clients would communicate with the same Socket.io server and follow the same event contract.

The architecture became:

  • One backend
  • Shared real-time event system
  • Multiple independent clients

That idea fascinated me because it felt much closer to how real systems are designed. The backend becomes a platform rather than something tied to a single interface.

The web client would demonstrate:

  • React and frontend engineering
  • Real-time browser UI
  • API integration
  • Collaborative UX

The terminal client would demonstrate:

  • Python and textual
  • TUI application design
  • Networking fundamentals
  • Event-driven architecture

Both clients solving the same problem differently ended up being far more interesting than building two unrelated projects.

Another thing that drew me toward the concept was how naturally social music is. Most music apps are still surprisingly individual experiences. You send links back and forth, but you rarely feel like you’re actually listening together. I wanted to explore whether a lightweight “virtual jam room” could recreate some of the feeling of passing songs around with friends in the same room.

The deeper I got into planning, the more the project evolved from a simple terminal experiment into a full real-time collaboration platform.

And honestly, that’s probably my favorite kind of project idea — one that starts small, teaches you something unexpected, and gradually expands into something much bigger than the original concept.

Clone this wiki locally