a spotify jam–like realtime sync system by creative computing society
this project has two parts:
- frontend (vite) → plays the video
- backend (bun) → fetches stream URLs from youtube
flow:
frontend → /manifest → backend → youtube → stream url → frontend → video plays
- click fork (top right on github)
- clone your fork:
git clone https://github.com/<your-username>/ccs-music-jam.git
cd ccs-music-jambun installbun devthis starts:
- backend → http://localhost:8080
- frontend → http://localhost:5173
open the frontend in your browser.
start small:
go to:
src/frontend/main.ts
replace:
const videoId = "dQw4w9WgXcQ";with any youtube video id of your choice.
refresh → it should play your video
src/
frontend/ → (vite)
backend/ → (bun)
shared/ → (shared types/utilities)
- frontend talks to backend using
/manifest - vite proxy forwards frontend requests to bun server
- note: frontend never talks to youtube directly (cors will destroy you)
/manifest→ gives you a playable stream URL- if
/manifestfails → video won’t play - backend handles youtube signature + deciphering
- frontend just plays whatever URL it gets
you don’t need to touch everything at once
don’t try to understand everything at once
instead:
- change something small
- break something
- try and fix it
- repeat
that’s the fastest way to move around this project and learn
i’ve set up just the base.
you’ll be building:
- shared playback state
- syncing between users
- realtime updates (via websockets)
think: spotify jam, but built from scratch and better (cuz you made it)
- running only frontend (backend is required)
- editing random files without clearly knowing what it does
- trying to make things “perfect” before they work
if something breaks, good. it can be fixed. and you’re probably closer to understanding it than before.