VoteTheBeat Β | Β Demo
A collaborative, real-time music queue and voting app.
Built with React (Vite), Express, Prisma, PostgreSQL (NeonDB), Socket.IO, and deployed on Vercel (frontend) and Render (backend).
- Create and join sessions for collaborative music listening
- Add songs to a shared queue (with JioSaavn search integration)
- Vote on songs to reorder the queue in real time
- Remove songs from the queue
- Live updates across all users via WebSockets (Socket.IO)
- Persistent storage with PostgreSQL (NeonDB)
- Modern UI with React and Tailwind CSS
- Frontend: React (Vite), TypeScript, Tailwind CSS, Socket.IO Client
- Backend: Node.js, Express, TypeScript, Prisma ORM, Socket.IO
- Database: PostgreSQL (NeonDB)
- Music API: JioSaavn (via public proxies)
- Deployment: Vercel (frontend), Render (backend)
/frontend # React app (Vite)
/backend # Express API + Socket.IO + Prisma
git clone https://github.com/yourusername/votethebeat.git
cd votethebeatcd backend
cp .env.example .env # Fill in your DATABASE_URL for NeonDB or local Postgres
npm install
npx prisma db push # Or npx prisma migrate deploy
npm run devcd ../frontend
cp .env.example .env # Set VITE_API_BASE_URL to your backend URL (local or Render)
npm install
npm run dev- Create a session (as a host)
- Share the session code with friends
- Add songs to the queue (search via JioSaavn)
- Vote for your favorite songs
- Watch the queue update live for all users
Pull requests are welcome! For major changes, please open an issue first.
Made with β€οΈ by Satwik Dubey!