top of page

Democratic-Tunes

Product Design

​​​

I'm building a tiny but super fun app that lets a group of friends add songs and vote what plays next , like a digital democratic jukebox for your house parties! I care a lot about clean APIs, resilient infra, and fast UI loops, so I used FastAPI, Postgres and a lightweight React front end. Let’s make music arguments... democratic 🎶 !!!

​

This is a WIP and I'm actively shipping. Bear in mind that I'm also learning with this (especially on the front end area) so of course there might be some bugs, but hopefully it will improve as days pass... The core is already live!

​

Why?

I’ve been to too many parties where one person controls the music and everyone else just complains. I wanted to make it fairer (and more fun) by turning the playlist into a kind of mini democracy. With a simple code, anyone can jump in, vote on songs, and watch the crowd’s favorites rise to the top. The host still has the power to skip (some balance is needed!), but the vibe becomes collaborative instead of chaotic.

Architecture

  • The frontend is built using React and TypeScript (helps build a fast, clear UI with good type checking so less bugs) and hosted on Vercel

​

  • The backend is built with FastAPI (great because it handles multiple requests quickly and keeps the backend code simple+readable) and uses PostgreSQL for the database. It’s hosted on Fly.io.

​

  • The frontend talks to the backend using secure HTTPS calls, with a tiny client library helping out.

​

  • User identity is managed simply with a cookie stored safely so scripts can’t access it.

​

  • To keep data fresh, the app currently asks the backend for updates regularly (polling). Using WebSockets (which allow real-time updates) is planned for the future!

​

Playback

  • YouTube embed as a fast win so sound works today.

  • Spotify Web Playback for the host with OAuth and room-scoped playback control.

  • Auto-advance on track end.

​

Real-time

  • Move from polling to WebSockets. Redis Pub/Sub for queue.updated events and presence.

​

Quality and growth

  • Host tools: remove track, lock room, vote threshold to auto-advance.

  • Analytics: session length, time to first track, votes per participant, retention by host.

  • Observability: structured logs, alerts, and a tiny admin page.

  • Testing: API integration tests and a few key UI tests.

  • PWA so guests can add from phones quickly.”

Next Steps:

Thanks for taking a look at my work! Feel free to contact me at amasini@alum.mit.edu if you would like to chat more.

bottom of page